jaegertracing/jaeger · error

failed to execute FindTraces: %w

Error message

failed to execute FindTraces: %w

What it means

TraceReader.FindTraces wraps an error from the initial FindTraces RPC call with this message. The method returns an iterator; if establishing the stream fails, it yields (nil, err) once with this wrapped error instead of traces. It is distinct from mid-stream errors, which use 'received error from grpc stream'.

Source

Thrown at internal/storage/v2/grpc/tracereader.go:149

			SpanKind: op.SpanKind,
		}
	}
	return operations, nil
}

func (tr *TraceReader) FindTraces(
	ctx context.Context,
	params tracestore.TraceQueryParams,
) iter.Seq2[[]ptrace.Traces, error] {
	return func(yield func([]ptrace.Traces, error) bool) {
		query, err := toProtoQueryParameters(params)
		if err != nil {
			yield(nil, err)
			return
		}
		stream, err := tr.client.FindTraces(ctx, &storage.FindTracesRequest{Query: query})
		if err != nil {
			yield(nil, fmt.Errorf("failed to execute FindTraces: %w", err))
			return
		}
		for received, err := stream.Recv(); !errors.Is(err, io.EOF); received, err = stream.Recv() {
			if err != nil {
				yield(nil, fmt.Errorf("received error from grpc stream: %w", err))
				return
			}
			if !yield([]ptrace.Traces{received.ToTraces()}, nil) {
				return
			}
		}
	}
}

func (tr *TraceReader) FindTraceIDs(
	ctx context.Context,
	params tracestore.TraceQueryParams,
) iter.Seq2[[]tracestore.FoundTraceID, error] {

View on GitHub (pinned to 806f444784)

Solutions

  1. Check the wrapped error's gRPC status to identify transport vs. application rejection
  2. Validate the TraceQueryParameters (service name, time range, limits) sent to the server
  3. Verify remote server availability and version support for FindTraces
  4. Retry with backoff on codes.Unavailable
Defensive patterns

Strategy: try-catch

Validate before calling

if query.ServiceName == "" && len(query.Attributes) == 0 { return errors.New("query too broad; provide a service name") }

Try / catch

for traces, err := range reader.FindTraces(ctx, q) {
    if err != nil {
        var se *status.Status
        if status.Code(err) == codes.Unavailable { /* retry */ }
        return err
    }
}

Prevention

When it happens

Trigger: Calling traceReader.FindTraces(ctx, query) where the client.FindTraces(...) streaming RPC fails immediately: server unreachable, invalid query rejected server-side, method unimplemented, or context deadline exceeded before the stream is established.

Common situations: Remote storage backend down; query with invalid/unsupported parameters rejected by server; Unimplemented on old remote servers; network flaps at query start.

Related errors


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