You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/02/15 10:51:15 UTC

[camel] branch main updated: CAMEL-19051: Avoid using the GlobalOpenTelemetry.get() and allow for injection of ContextPropagators. (#9341)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 40de9989319 CAMEL-19051: Avoid using the GlobalOpenTelemetry.get() and allow for injection of ContextPropagators. (#9341)
40de9989319 is described below

commit 40de9989319159aede42036d263a59004863ffff
Author: Sven Carstens <s....@gmx.de>
AuthorDate: Wed Feb 15 11:51:08 2023 +0100

    CAMEL-19051: Avoid using the GlobalOpenTelemetry.get() and allow for injection of ContextPropagators. (#9341)
    
    Co-authored-by: Sven Carstens <sv...@aoe.com>
---
 .../camel/opentelemetry/OpenTelemetryTracer.java   | 31 ++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java
index d56073a827d..8e819ac20bf 100644
--- a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java
+++ b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java
@@ -26,6 +26,7 @@ import io.opentelemetry.api.trace.SpanBuilder;
 import io.opentelemetry.api.trace.SpanKind;
 import io.opentelemetry.api.trace.Tracer;
 import io.opentelemetry.context.Context;
+import io.opentelemetry.context.propagation.ContextPropagators;
 import org.apache.camel.Exchange;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.opentelemetry.propagators.OpenTelemetryGetter;
@@ -41,6 +42,7 @@ public class OpenTelemetryTracer extends org.apache.camel.tracing.Tracer {
 
     private Tracer tracer;
     private String instrumentationName = "camel";
+    private ContextPropagators contextPropagators;
 
     public Tracer getTracer() {
         return tracer;
@@ -54,6 +56,14 @@ public class OpenTelemetryTracer extends org.apache.camel.tracing.Tracer {
         this.instrumentationName = instrumentationName;
     }
 
+    public ContextPropagators getContextPropagators() {
+        return contextPropagators;
+    }
+
+    public void setContextPropagators(ContextPropagators contextPropagators) {
+        this.contextPropagators = contextPropagators;
+    }
+
     private SpanKind mapToSpanKind(org.apache.camel.tracing.SpanKind kind) {
         switch (kind) {
             case SPAN_KIND_CLIENT:
@@ -86,6 +96,23 @@ public class OpenTelemetryTracer extends org.apache.camel.tracing.Tracer {
             // No tracer is available, so setup NoopTracer
             tracer = OpenTelemetry.noop().getTracer(instrumentationName);
         }
+
+        if (contextPropagators == null) {
+            Set<ContextPropagators> contextPropagatorsSet
+                    = getCamelContext().getRegistry().findByType(ContextPropagators.class);
+            if (contextPropagatorsSet.size() == 1) {
+                contextPropagators = contextPropagatorsSet.iterator().next();
+            }
+        }
+
+        if (contextPropagators == null) {
+            contextPropagators = GlobalOpenTelemetry.get().getPropagators();
+        }
+
+        if (contextPropagators == null) {
+            // No contextPropagators is available, so setup NoopTracer
+            contextPropagators = OpenTelemetry.noop().getPropagators();
+        }
     }
 
     @Override
@@ -114,7 +141,7 @@ public class OpenTelemetryTracer extends org.apache.camel.tracing.Tracer {
             baggage = spanFromExchange.getBaggage();
         } else {
             ExtractAdapter adapter = sd.getExtractAdapter(exchange.getIn().getHeaders(), encoding);
-            Context ctx = GlobalOpenTelemetry.get().getPropagators().getTextMapPropagator().extract(Context.current(), adapter,
+            Context ctx = contextPropagators.getTextMapPropagator().extract(Context.current(), adapter,
                     new OpenTelemetryGetter(adapter));
             Span span = Span.fromContext(ctx);
             baggage = Baggage.fromContext(ctx);
@@ -144,7 +171,7 @@ public class OpenTelemetryTracer extends org.apache.camel.tracing.Tracer {
         } else {
             ctx = Context.current().with(otelSpan);
         }
-        GlobalOpenTelemetry.get().getPropagators().getTextMapPropagator().inject(ctx, adapter, new OpenTelemetrySetter());
+        contextPropagators.getTextMapPropagator().inject(ctx, adapter, new OpenTelemetrySetter());
     }
 
 }