jaegertracing/jaeger · error
cannot create dependencies reader
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'.
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
- cannot find factory for dependency storage
- cannot create metrics reader
- cannot find factory for trace storage
- cannot find metrics storage factory
AI-assisted analysis of jaegertracing/jaeger@806f444784 (2026-09-01).
Data as JSON: /api/errors/f898dd9e3d3339a0.
Report an issue: GitHub.
Appendix: 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)