jaegertracing/jaeger · error
%s: %w
Error message
%s: %w
What it means
This is the generic branch of FindTraceSummaries' maybeNotImplemented wrapper: any error that is NOT codes.Unimplemented/ErrUnsupported is wrapped as '%s: %w' with a contextual message. It means FindTraceSummaries failed for a real (non-capability) reason such as transport failure, bad query parameters, or deadline exceeded.
Source
Thrown at internal/storage/v2/grpc/tracereader.go:202
foundTraceIDs[i] = tracestore.FoundTraceID{
TraceID: pcommon.TraceID(sizedTraceID),
Start: foundTraceID.Start,
End: foundTraceID.End,
}
}
yield(foundTraceIDs, nil)
}
}
func (tr *TraceReader) FindTraceSummaries(
ctx context.Context,
params tracestore.TraceQueryParams,
) iter.Seq2[[]tracestore.TraceSummary, error] {
maybeNotImplemented := func(err error, msg string) error {
if status.Code(err) == codes.Unimplemented || errors.Is(err, errors.ErrUnsupported) {
return fmt.Errorf("remote server does not support FindTraceSummaries: %w", errors.ErrUnsupported)
}
return fmt.Errorf("%s: %w", msg, err)
}
return func(yield func([]tracestore.TraceSummary, error) bool) {
query, err := toProtoQueryParameters(params)
if err != nil {
yield(nil, err)
return
}
stream, err := tr.client.FindTraceSummaries(ctx, &storage.FindTraceSummariesRequest{Query: query})
if err != nil {
yield(nil, maybeNotImplemented(err, "failed to execute FindTraceSummaries"))
return
}
for {
resp, err := stream.Recv()
if errors.Is(err, io.EOF) {
return
}
if err != nil {View on GitHub (pinned to 806f444784)
Solutions
- Read the %w-wrapped underlying error and its gRPC status
- Validate/limit the TraceQueryParams (time range, filter complexity)
- Retry on transient codes.Unavailable with backoff
- Distinguish from ErrUnsupported before assuming the feature is missing
Defensive patterns
Strategy: try-catch
Validate before calling
if params.StartTimeMax.Sub(params.StartTimeMin) > maxRange { return errors.New("time range too large") } Try / catch
_, err := reader.FindTraceSummaries(ctx, params)(func(batch []tracestore.TraceSummary, err error) bool { ... })
// on err: check errors.Is(err, errors.ErrUnsupported) first, else inspect status.Code(err) Prevention
- Check ErrUnsupported before generic handling so real errors aren't mistaken for missing features
- Validate filter expressions before query
- Bound query ranges and deadlines
- Log the %w-wrapped cause for diagnosis
When it happens
Trigger: Calling FindTraceSummaries when the gRPC call fails with Unavailable, DeadlineExceeded, InvalidArgument (bad query), or when toProtoQueryParameters fails to convert the filter.
Common situations: Server down or restarting; oversized time-range queries hitting deadlines; unsupported filter expressions rejected by conversion; network issues.
Related errors
- access denied
- failed to execute GetOperations: %w
- failed to execute FindTraces: %w
- failed to execute FindTraceIDs: %w
- malformed token: multiple tokens found
AI-assisted analysis of jaegertracing/jaeger@806f444784 (2026-09-01).
Data as JSON: /api/errors/83a04483c4fcc2d5.
Report an issue: GitHub.