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 <[email protected]>
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);
}