jaegertracing/jaeger · warning
remote server does not support FindTraceSummaries: %w
Error message
remote server does not support FindTraceSummaries: %w
What it means
The api_v3 traceReader streams trace summaries via the FindTraceSummaries RPC. If the remote server rejects the call with gRPC status codes.Unimplemented, the server does not implement this method, and the reader rewrites the error as 'remote server does not support FindTraceSummaries' wrapping errors.ErrUnsupported so callers can detect it programmatically.
Source
Thrown at cmd/jaeger/internal/integration/trace_reader.go:188
_ tracestore.TraceQueryParams,
) iter.Seq2[[]tracestore.FoundTraceID, error] {
panic("not implemented")
}
func (r *traceReader) FindTraceSummaries(
ctx context.Context,
query tracestore.TraceQueryParams,
) iter.Seq2[[]tracestore.TraceSummary, error] {
return func(yield func([]tracestore.TraceSummary, error) bool) {
protoQuery, err := toProtoQuery(query)
if err != nil {
yield(nil, err)
return
}
stream, err := r.client.FindTraceSummaries(ctx, &api_v3.FindTraceSummariesRequest{Query: protoQuery})
if err != nil {
if status.Code(err) == codes.Unimplemented {
err = fmt.Errorf("remote server does not support FindTraceSummaries: %w", errors.ErrUnsupported)
}
yield(nil, err)
return
}
for {
resp, err := stream.Recv()
if errors.Is(err, io.EOF) {
return
}
if err != nil {
yield(nil, err)
return
}
batch := make([]tracestore.TraceSummary, len(resp.GetSummaries()))
for i, ps := range resp.GetSummaries() {
traceID, parseErr := traceIDFromHex(ps.GetTraceId())
if parseErr != nil {
yield(nil, parseErr)View on GitHub (pinned to 806f444784)
Solutions
- Upgrade the remote jaeger-query server to a version implementing api_v3 FindTraceSummaries
- Check errors.Is(err, errors.ErrUnsupported) and fall back to a supported RPC or skip search
- Verify you are connecting to the api_v3 gRPC service port, not a different endpoint that lacks the method
Example fix
// before
sums, err := reader.FindTraceSummaries(ctx, query)
if err != nil { return err }
// after
sums, err := reader.FindTraceSummaries(ctx, query)
if errors.Is(err, errors.ErrUnsupported) {
return nil // degrade gracefully for older servers
} Defensive patterns
Strategy: fallback
Validate before calling
// pre-check server version before relying on FindTraceSummaries // e.g. call a version/capabilities endpoint, or attempt the RPC and inspect status.Code(err) == codes.Unimplemented
Try / catch
err := streamErr
if status.Code(err) == codes.Unimplemented || errors.Is(err, errors.ErrUnsupported) {
// degrade: use FindTraces or skip search for old servers
} Prevention
- Pin client and server jaeger versions in deployments
- Use errors.Is(err, errors.ErrUnsupported) instead of string matching to detect the case
- Test integration against the oldest supported server version
When it happens
Trigger: FindTraceSummaries(ctx, req) returns a gRPC error whose status code is Unimplemented — the remote jaeger-query is an older version or a build without the api_v3 FindTraceSummaries RPC.
Common situations: Pointing the integration reader at an older jaeger-query server that predates api_v3 streaming; connecting to a proxy/gRPC gateway that drops unknown methods; version mismatch between client and server deployments.
Related errors
- access denied
- malformed token: multiple tokens found
- authenticator is not supported
- %s and %s are required
- %s must be before %s
AI-assisted analysis of jaegertracing/jaeger@806f444784 (2026-09-01).
Data as JSON: /api/errors/8d147e540c33c221.
Report an issue: GitHub.