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