You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Pasquale Congiusti (Jira)" <ji...@apache.org> on 2026/04/13 07:53:00 UTC
[jira] [Work started] (CAMEL-23283) OpenTelemetry/Micrometer traces are not correctly structured for JMS-initiated routes
[ https://issues.apache.org/jira/browse/CAMEL-23283?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Work on CAMEL-23283 started by Pasquale Congiusti.
--------------------------------------------------
> OpenTelemetry/Micrometer traces are not correctly structured for JMS-initiated routes
> -------------------------------------------------------------------------------------
>
> Key: CAMEL-23283
> URL: https://issues.apache.org/jira/browse/CAMEL-23283
> Project: Camel
> Issue Type: Task
> Components: camel-tracing
> Affects Versions: 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.18.1
> Reporter: Bjorn Beskow
> Assignee: Pasquale Congiusti
> Priority: Minor
> 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 Micrometer Observation API are not properly nested (they get their own, unique traceId's).
> The attached sample project pinpoints the problem: For an exchange with a "traceparent" propagated from the caller, everything works as expected. For an exchange without a propagated existing trace, the tests show that the MDC is not properly populated and any nested spans have the wrong structure.
> 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 (for example via the ObservationRegistry). It also becomes invisible for the MDC context.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)