Currently, TracingDecoratorTask only wraps gRPC actions, creating a child span under kuadrant_filter with the sources tag (policy name). Non-gRPC actions (headers, deny, store, fail) don't get any tracing spans, so when an extension policy only uses these action types, there is no way to identify the originating policy in the trace.
In Jaeger, you only see the parent kuadrant_filter span with no child spans and no sources tag visible.
Proposed solution
Extend TracingDecoratorTask wrapping to non-gRPC actions in Blueprint::to_tasks():
- Parameterize the span name in
TracingDecoratorTask — currently hardcoded to "grpc". Use the action kind instead (e.g., "headers", "deny", "store", "fail").
- Wrap non-gRPC tasks with
TracingDecoratorTask when tracing_enabled is true, the same way gRPC tasks are wrapped today.
- No data-flow changes needed — every action already carries the
sources field from the operator config, it's just not being used for non-gRPC actions.
- No operator-side changes needed.
Relevant code
src/kuadrant/pipeline/tasks/tracing_decorator.rs — TracingDecoratorTask, span name hardcoded to "grpc"
src/kuadrant/pipeline/blueprint.rs — Blueprint::to_tasks(), where TracingDecoratorTask wrapping is applied only to gRPC actions
Currently,
TracingDecoratorTaskonly wraps gRPC actions, creating a child span underkuadrant_filterwith thesourcestag (policy name). Non-gRPC actions (headers,deny,store,fail) don't get any tracing spans, so when an extension policy only uses these action types, there is no way to identify the originating policy in the trace.In Jaeger, you only see the parent
kuadrant_filterspan with no child spans and nosourcestag visible.Proposed solution
Extend
TracingDecoratorTaskwrapping to non-gRPC actions inBlueprint::to_tasks():TracingDecoratorTask— currently hardcoded to"grpc". Use the action kind instead (e.g.,"headers","deny","store","fail").TracingDecoratorTaskwhentracing_enabledis true, the same way gRPC tasks are wrapped today.sourcesfield from the operator config, it's just not being used for non-gRPC actions.Relevant code
src/kuadrant/pipeline/tasks/tracing_decorator.rs—TracingDecoratorTask, span name hardcoded to"grpc"src/kuadrant/pipeline/blueprint.rs—Blueprint::to_tasks(), whereTracingDecoratorTaskwrapping is applied only to gRPC actions