jaegertracing/jaeger · error
failed to query dependencies: %w
Error message
failed to query dependencies: %w
What it means
ClickHouse depstore Reader.GetDependencies queries the jaeger_dependencies table for dependency-link snapshots between the query's start and end times. If the underlying clickhouse-go Query call fails — connection errors, DNS failure, auth rejection, malformed SQL/table missing — the error is wrapped with this message and returned. The %w wrap preserves the driver error for errors.Is/As inspection.
Source
Thrown at internal/storage/v2/clickhouse/depstore/reader.go:37
type Reader struct {
conn driver.Conn
}
func NewDependencyReader(conn driver.Conn) *Reader {
return &Reader{conn: conn}
}
// dependencyKey groups dependency links by (parent, child) for merging.
type dependencyKey struct {
parent string
child string
}
func (r *Reader) GetDependencies(ctx context.Context, query depstore.QueryParameters) ([]model.DependencyLink, error) {
rows, err := r.conn.Query(ctx, sql.SelectDependencies, query.StartTime, query.EndTime)
if err != nil {
return nil, fmt.Errorf("failed to query dependencies: %w", err)
}
defer rows.Close()
// Merge dependencies from all snapshots in the time range.
merged := make(map[dependencyKey]uint64)
for rows.Next() {
var blob string
if err := rows.Scan(&blob); err != nil {
return nil, fmt.Errorf("failed to scan dependency row: %w", err)
}
var links []dependencyLink
if err := json.Unmarshal([]byte(blob), &links); err != nil {
return nil, fmt.Errorf("failed to unmarshal dependencies JSON: %w", err)
}
for _, link := range links {
merged[dependencyKey{link.Parent, link.Child}] += link.CallCount
}View on GitHub (pinned to 806f444784)
Solutions
- Verify ClickHouse connectivity (address, port, credentials, TLS) in the storage configuration and that the server is up.
- Confirm the schema is initialized (jaeger_dependencies table exists) with the correct database name.
- Inspect the wrapped driver error via errors.Is/As (e.g. clickhouse exceptions) to pinpoint auth vs network vs SQL causes; check context deadlines.
Example fix
// config before
storage: { clickhouse: { address: "clickhouse:9009" } }
// after (default native port)
storage: { clickhouse: { address: "clickhouse:9000", database: "jaeger" } } Defensive patterns
Strategy: try-catch
Validate before calling
if err := conn.Ping(ctx); err != nil {
return fmt.Errorf("clickhouse unreachable: %w", err)
}
if query.StartTime.After(query.EndTime) {
return errors.New("invalid dependency query range")
} Try / catch
deps, err := reader.GetDependencies(ctx, q)
if err != nil {
var chEx *clickhouse.Exception
if errors.As(err, &chEx) {
log.Printf("clickhouse error code=%d: %v", chEx.Code, chEx)
} else if errors.Is(err, context.DeadlineExceeded) {
log.Printf("dependency query timed out")
}
return fmt.Errorf("getting dependencies: %w", err)
} Prevention
- Validate ClickHouse address/credentials/TLS in config and monitor connectivity (ping/healthcheck)
- Ensure the schema job created the dependencies table before serving traffic
- Set sane query timeouts and inspect wrapped clickhouse.Exception codes when errors occur
When it happens
Trigger: Calling GetDependencies(ctx, depstore.QueryParameters{StartTime, EndTime}) when r.conn.Query(ctx, sql.SelectDependencies, ...) returns an error: server unreachable, credentials invalid, database/table absent, context canceled before the query starts.
Common situations: ClickHouse endpoint misconfigured in the storage config; ClickHouse down or restarting; wrong username/password or TLS settings; network policy blocking port 9000/8123; table not created by schema initialization.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- failed to scan dependency row: %w
- failed to query trace: %w
- failed to query services: %w
- failed to query trace IDs: %w
- failed to prepare batch: %w
AI-assisted analysis of jaegertracing/jaeger@806f444784 (2026-09-01).
Data as JSON: /api/errors/7e73952ec7c7637a.
Report an issue: GitHub.