[ 
https://issues.apache.org/jira/browse/CAMEL-18661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-18661:
--------------------------------
    Priority: Minor  (was: Critical)

> Camel  OpenTelemtery instrumentation does not make spans current
> ----------------------------------------------------------------
>
>                 Key: CAMEL-18661
>                 URL: https://issues.apache.org/jira/browse/CAMEL-18661
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-opentelemetry
>    Affects Versions: 3.19.0
>         Environment: any, functional issue
>            Reporter: Liudmila 
>            Priority: Minor
>         Attachments: camel_and_service_bus.png
>
>
> I have the following application:
>  
> {code:java}
> @Component
> public class SourceRoute extends EndpointRouteBuilder {
>     private static final String cs = "...";
>     @Override
>     public void configure() {
>        from(timer("tick").period(1000).repeatCount(1))
>                 .log("Timer triggered")
>                 .setBody(simple("hello"))
>                 .to(azureServicebus("testme").
>                         serviceBusType("topic").
>                         connectionString(cs));
>     }
> } {code}
>  
> And I run it with [OpenTelemtery Java 
> agent|https://github.com/open-telemetry/opentelemetry-java-instrumentation/].
> Camel creates "tick" and "testme" spans.
> ServiceBus SDK is instrumented too and it creates it's own spans.
> h2. Actual behavior:
> Spans created by ServiceBus SDK are unrelated to Camel spans. I.e. ServiceBus 
> spans and Camel spans are in different traces (check out the attached 
> screenshot).
> h2. Expected behavior:
> Camel "testme" span is a parent of ServiceBus spans:
> * tick
> ** testme
> *** ServiceBus.message
> *** ServiceBus.send
> h2. Investigation
> If I look into the OTel instrumentation code (and debug my application). I 
> can see that OTel span starts here
> https://github.com/apache/camel/blob/1175c2666821457dcb6cf0921f4076508459341a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java#L92
> and then is 'activated' here 
> https://github.com/apache/camel/blob/main/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java#L248
> But the activation code only puts trace_id and span_id on MDC.
> The proposal for Camel is to make OpenTelemtery span active (using 
> Span.makeCurrent()).
> This is the only way underlying traces can be correlated to Camel spans.
> {code:java}
> try (Scope s = span.makeCurrent()) {
>    // wrap processing, but always clean up the scope to avoid leaks
> } {code}
> OTel instrumentation will take care of propagating this context anywhere else.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to