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.carst...@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 <sven.carst...@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()); } }