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

  1. Upgrade the remote jaeger-query server to a version implementing api_v3 FindTraceSummaries
  2. Check errors.Is(err, errors.ErrUnsupported) and fall back to a supported RPC or skip search
  3. 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

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


AI-assisted analysis of jaegertracing/jaeger@806f444784 (2026-09-01). Data as JSON: /api/errors/8d147e540c33c221. Report an issue: GitHub.