You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/02/15 10:51:15 UTC
[camel] branch main updated: CAMEL-19051: Avoid using the GlobalOpenTelemetry.get() and allow for injection of ContextPropagators. (#9341)
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....@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 <sv...@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());
}
}