jaegertracing/jaeger · error
cannot create dependencies reader: %w
Error message
cannot create dependencies reader: %w
What it means
Once the primary factory is confirmed as a depstore.Factory, Start calls CreateDependencyReader(). Failure means the backend recognized dependency support but could not instantiate its dependency reader (typically an internal initialization error), wrapped as 'cannot create dependencies reader'.
Source
Thrown at cmd/jaeger/internal/extension/jaegerquery/server.go:92
return fmt.Errorf("cannot find factory for trace storage %s: %w", s.config.Storage.TracesPrimary, err)
}
traceReader, err := tf.CreateTraceReader()
if err != nil {
return fmt.Errorf("cannot create trace reader: %w", err)
}
interceptors, err := queryinterceptor.Resolve(host, s.config.QueryInterceptors)
if err != nil {
return fmt.Errorf("cannot resolve query interceptors: %w", err)
}
df, ok := tf.(depstore.Factory)
if !ok {
return fmt.Errorf("cannot find factory for dependency storage %s: %w", s.config.Storage.TracesPrimary, err)
}
depReader, err := df.CreateDependencyReader()
if err != nil {
return fmt.Errorf("cannot create dependencies reader: %w", err)
}
opts := querysvc.QueryServiceOptions{
MaxClockSkewAdjust: s.config.MaxClockSkewAdjust,
MaxTraceSize: s.config.MaxTraceSize,
Interceptors: interceptors,
}
if err := s.addArchiveStorage(&opts, host); err != nil {
return err
}
qs := querysvc.NewQueryService(traceReader, depReader, opts)
s.qs = qs
mqs, err := s.createMetricReader(host)
if err != nil {
return err
}
View on GitHub (pinned to 806f444784)
Solutions
- Read the wrapped cause for the backend-specific failure and fix it (connectivity, schema, permissions)
- Run/verify the backend schema initialization covering dependency storage (e.g. Cassandra dependencies table)
- Check storage config section for dependency-related settings (keyspace, index prefix)
- Test the same backend with the jaeger-all-in-one binary to isolate config vs backend issues
Example fix
// before # cassandra keyspace jaeger_v1_test missing dependencies table // after # run: cassandra-schema.sh (creates dependencies table in the keyspace)
Defensive patterns
Strategy: try-catch
Validate before calling
// Verify schema/permissions for dependency storage before start
cqlSession.Query("SELECT count(*) FROM jaeger_v1_test.dependencies").Exec() // must succeed Try / catch
if err := ext.Start(ctx, host); err != nil {
if strings.Contains(err.Error(), "cannot create dependencies reader") {
log.Fatalf("dependency reader init failed: %v — check schema/permissions", err)
}
return err
} Prevention
- Run schema initialization covering the dependencies table/index on every backend upgrade
- Grant the jaeger user read access to dependency storage objects
- Smoke-test dependency reads with all-in-one against the same backend
- Keep keyspace/index-prefix config consistent across components
When it happens
Trigger: df.CreateDependencyReader() returns an error — backend-specific initialization failure such as failed session/keyspace setup in Cassandra or index/client creation failure in Elasticsearch.
Common situations: Cassandra keyspace for dependencies not created; Elasticsearch dependency index misconfigured; storage client partially initialized due to earlier connection errors; permission denied on the dependencies table/index.
Related errors
- cannot create trace reader: %w
- cannot find factory for dependency storage %s: %w
- trace not found
- failed to initialize storage '%s': %w
- cannot find factory for trace storage %s: %w
AI-assisted analysis of jaegertracing/jaeger@806f444784 (2026-09-01).
Data as JSON: /api/errors/f898dd9e3d3339a0.
Report an issue: GitHub.