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

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


The following commit(s) were added to refs/heads/master by this push:
     new bb03687  Fix opentelemetry injection/extraction (#4077)
bb03687 is described below

commit bb03687d713970d6f47e5102b1eb5fccaa21cf1a
Author: Ruben Vargas Palma <ruben.vp8...@gmail.com>
AuthorDate: Thu Aug 6 23:19:40 2020 -0500

    Fix opentelemetry injection/extraction (#4077)
---
 .../org/apache/camel/opentelemetry/OpenTelemetryTracer.java    | 10 ++++++++--
 .../camel/opentelemetry/propagators/OpenTelemetryGetter.java   |  6 ++++++
 2 files changed, 14 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 2ef3699..b57c061 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
@@ -20,6 +20,7 @@ import java.util.Set;
 
 import io.grpc.Context;
 import io.opentelemetry.OpenTelemetry;
+import io.opentelemetry.context.Scope;
 import io.opentelemetry.trace.DefaultTracer;
 import io.opentelemetry.trace.Span;
 import io.opentelemetry.trace.SpanContext;
@@ -29,6 +30,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.opentelemetry.propagators.OpenTelemetryGetter;
 import org.apache.camel.opentelemetry.propagators.OpenTelemetrySetter;
+import org.apache.camel.tracing.ExtractAdapter;
 import org.apache.camel.tracing.InjectAdapter;
 import org.apache.camel.tracing.SpanAdapter;
 import org.apache.camel.tracing.SpanDecorator;
@@ -91,7 +93,8 @@ public class OpenTelemetryTracer extends 
org.apache.camel.tracing.Tracer {
             OpenTelemetrySpanAdapter spanFromExchange = 
(OpenTelemetrySpanAdapter) parent;
             builder = 
builder.setParent(spanFromExchange.getOpenTelemetrySpan());
         } else {
-            Context ctx = 
OpenTelemetry.getPropagators().getHttpTextFormat().extract(Context.current(), 
sd.getExtractAdapter(exchange.getIn().getHeaders(), encoding), new 
OpenTelemetryGetter());
+            ExtractAdapter adapter = 
sd.getExtractAdapter(exchange.getIn().getHeaders(), encoding);
+            Context ctx = 
OpenTelemetry.getPropagators().getHttpTextFormat().extract(Context.current(), 
adapter, new OpenTelemetryGetter(adapter));
             Span span = TracingContextUtils.getSpan(ctx);
             SpanContext parentFromHeaders = span.getContext();
 
@@ -113,7 +116,10 @@ public class OpenTelemetryTracer extends 
org.apache.camel.tracing.Tracer {
 
     @Override
     protected void inject(SpanAdapter span, InjectAdapter adapter) {
-        
OpenTelemetry.getPropagators().getHttpTextFormat().inject(Context.current(), 
adapter, new OpenTelemetrySetter());
+        OpenTelemetrySpanAdapter spanFromExchange = (OpenTelemetrySpanAdapter) 
span;
+        try (Scope scope =  
tracer.withSpan(spanFromExchange.getOpenTelemetrySpan())) {
+            
OpenTelemetry.getPropagators().getHttpTextFormat().inject(Context.current(), 
adapter, new OpenTelemetrySetter());
+        }
     }
 
 }
diff --git 
a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java
 
b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java
index 3cf8abe..8ad8d22 100644
--- 
a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java
+++ 
b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java
@@ -21,6 +21,12 @@ import org.apache.camel.tracing.ExtractAdapter;
 
 public class OpenTelemetryGetter implements 
HttpTextFormat.Getter<ExtractAdapter> {
 
+    ExtractAdapter adapter;
+
+    public OpenTelemetryGetter(ExtractAdapter adapter) {
+        this.adapter = adapter;
+    }
+
     @Override public String get(ExtractAdapter adapter, String key) {
         return (String) adapter.get(key);
     }

Reply via email to