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); }