{"record":{"id":"8d147e540c33c221","repo":"jaegertracing/jaeger","slug":"remote-server-does-not-support-findtracesummaries","errorCode":null,"errorMessage":"remote server does not support FindTraceSummaries: %w","messagePattern":"remote server does not support FindTraceSummaries: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cmd/jaeger/internal/integration/trace_reader.go","lineNumber":188,"sourceCode":"\t_ tracestore.TraceQueryParams,\n) iter.Seq2[[]tracestore.FoundTraceID, error] {\n\tpanic(\"not implemented\")\n}\n\nfunc (r *traceReader) FindTraceSummaries(\n\tctx context.Context,\n\tquery tracestore.TraceQueryParams,\n) iter.Seq2[[]tracestore.TraceSummary, error] {\n\treturn func(yield func([]tracestore.TraceSummary, error) bool) {\n\t\tprotoQuery, err := toProtoQuery(query)\n\t\tif err != nil {\n\t\t\tyield(nil, err)\n\t\t\treturn\n\t\t}\n\t\tstream, err := r.client.FindTraceSummaries(ctx, &api_v3.FindTraceSummariesRequest{Query: protoQuery})\n\t\tif err != nil {\n\t\t\tif status.Code(err) == codes.Unimplemented {\n\t\t\t\terr = fmt.Errorf(\"remote server does not support FindTraceSummaries: %w\", errors.ErrUnsupported)\n\t\t\t}\n\t\t\tyield(nil, err)\n\t\t\treturn\n\t\t}\n\t\tfor {\n\t\t\tresp, err := stream.Recv()\n\t\t\tif errors.Is(err, io.EOF) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tyield(nil, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tbatch := make([]tracestore.TraceSummary, len(resp.GetSummaries()))\n\t\t\tfor i, ps := range resp.GetSummaries() {\n\t\t\t\ttraceID, parseErr := traceIDFromHex(ps.GetTraceId())\n\t\t\t\tif parseErr != nil {\n\t\t\t\t\tyield(nil, parseErr)","sourceCodeStart":170,"sourceCodeEnd":206,"githubUrl":"https://github.com/jaegertracing/jaeger/blob/806f4447841ecdb60519f408b004a599d515f437/cmd/jaeger/internal/integration/trace_reader.go#L170-L206","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nsums, err := reader.FindTraceSummaries(ctx, query)\nif err != nil { return err }\n// after\nsums, err := reader.FindTraceSummaries(ctx, query)\nif errors.Is(err, errors.ErrUnsupported) {\n    return nil // degrade gracefully for older servers\n}","handlingStrategy":"fallback","validationCode":"// pre-check server version before relying on FindTraceSummaries\n// e.g. call a version/capabilities endpoint, or attempt the RPC and inspect status.Code(err) == codes.Unimplemented","typeGuard":null,"tryCatchPattern":"err := streamErr\nif status.Code(err) == codes.Unimplemented || errors.Is(err, errors.ErrUnsupported) {\n    // degrade: use FindTraces or skip search for old servers\n}","preventionTips":["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"],"tags":["grpc","api-v3","version-compatibility"],"backgroundTag":"grpc-unimplemented-method","analyzedSha":"806f4447841ecdb60519f408b004a599d515f437","analyzedAt":"2026-09-01T02:39:22.140Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}