[
https://issues.apache.org/jira/browse/CAMEL-23283?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bjorn Beskow updated CAMEL-23283:
---------------------------------
Description:
When using camel-micrometer-observability, traces and spans are not correctly
structured if a traceId and root span is not already present (as a result of
OTEL context propagation from the caller, or by a Spring Boot framework
component in front of the camel component).
The effect is twofold:
* traceId and spanId is not put in the MDC context, and hence not present in
any logs created.
* Nested spans created programmatically using the Tracer are not properly
nested (they get their own, unique traceId's).
This seems to be caused by missing scope management:
MicrometerObservabilitySpanAdapter::activate() only calls span.start() but
doesn't put the
span into the tracer's thread-local scope. This means tracer.currentSpan()
returns null during route execution, hence the span is invisible to e.g.
programmatic child span creation that relies on tracer.currentSpan() to find a
parent span. It also becomes invisible for the MDC context.
was:
When using camel-observability or camel-micrometer-observability, traces and
spans are correctly created and exported for routes triggered by other,
tracing-aware framework components (e.g. http). If a route is triggered by a
jms message, no trace or span is exported however.
This seems to be caused by missing scope management:
MicrometerObservabilitySpanAdapter::activate() only calls span.start() but
doesn't put the
span into the tracer's thread-local scope. This means tracer.currentSpan()
returns null during route execution, hence the span is invisible to downstream
instrumentation that relies on tracer.currentSpan() to find a parent span.
> OpenTelemetry/Micrometer traces are not exported for JMS-initiated routes
> -------------------------------------------------------------------------
>
> Key: CAMEL-23283
> URL: https://issues.apache.org/jira/browse/CAMEL-23283
> Project: Camel
> Issue Type: Bug
> Components: camel-tracing
> Affects Versions: 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.18.1
> Reporter: Bjorn Beskow
> Priority: Major
> Attachments: jms-micrometer-observability.zip
>
>
> When using camel-micrometer-observability, traces and spans are not correctly
> structured if a traceId and root span is not already present (as a result of
> OTEL context propagation from the caller, or by a Spring Boot framework
> component in front of the camel component).
> The effect is twofold:
> * traceId and spanId is not put in the MDC context, and hence not present in
> any logs created.
> * Nested spans created programmatically using the Tracer are not properly
> nested (they get their own, unique traceId's).
> This seems to be caused by missing scope management:
> MicrometerObservabilitySpanAdapter::activate() only calls span.start() but
> doesn't put the
> span into the tracer's thread-local scope. This means tracer.currentSpan()
> returns null during route execution, hence the span is invisible to e.g.
> programmatic child span creation that relies on tracer.currentSpan() to find
> a parent span. It also becomes invisible for the MDC context.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)