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 2017/04/26 17:02:44 UTC

camel git commit: CAMEL-11198 Fix issue with propagating the trace context when using hystrix

Repository: camel
Updated Branches:
  refs/heads/master a978d4750 -> 667c38992


CAMEL-11198 Fix issue with propagating the trace context when using hystrix


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/667c3899
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/667c3899
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/667c3899

Branch: refs/heads/master
Commit: 667c38992dad2475866bfdd9d492f4df382c5a9e
Parents: a978d47
Author: Gary Brown <ga...@brownuk.com>
Authored: Wed Apr 26 17:37:52 2017 +0100
Committer: Gary Brown <ga...@brownuk.com>
Committed: Wed Apr 26 17:56:22 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/camel/opentracing/OpenTracingTracer.java | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/667c3899/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index 3ae9fc1..a3876af 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -201,6 +201,10 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 if (event instanceof ExchangeSendingEvent) {
                     ExchangeSendingEvent ese = (ExchangeSendingEvent) event;
                     SpanManager.ManagedSpan parent = spanManager.current();
+                    if (ese.getExchange().getProperties().containsKey(MANAGED_SPAN_PROPERTY)) {
+                        parent = (SpanManager.ManagedSpan)
+                                ese.getExchange().getProperty(MANAGED_SPAN_PROPERTY);
+                    }
                     SpanDecorator sd = getSpanDecorator(ese.getEndpoint());
                     if (!sd.newSpan()) {
                         return;
@@ -270,7 +274,6 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                 // Check if continuing exchange on same thread
                 if (exchange.getProperties().containsKey(MANAGED_SPAN_PROPERTY)) {
                     spanManager.activate((SpanManager.ManagedSpan)exchange.getProperty(MANAGED_SPAN_PROPERTY));
-                    exchange.setProperty(MANAGED_SPAN_PROPERTY, null);
                 }
                 SpanDecorator sd = getSpanDecorator(route.getEndpoint());
                 Span span = tracer.buildSpan(sd.getOperationName(exchange, route.getEndpoint()))
@@ -279,7 +282,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                     .withTag(Tags.SPAN_KIND.getKey(), sd.getReceiverSpanKind())
                     .start();
                 sd.pre(span, exchange, route.getEndpoint());
-                spanManager.activate(span);
+                exchange.setProperty(MANAGED_SPAN_PROPERTY, spanManager.activate(span));
                 if (LOG.isTraceEnabled()) {
                     LOG.trace("OpenTracing: start server span=" + span);
                 }
@@ -301,6 +304,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
                     sd.post(managedSpan.getSpan(), exchange, route.getEndpoint());
                     managedSpan.getSpan().finish();
                     managedSpan.deactivate();
+                    exchange.setProperty(MANAGED_SPAN_PROPERTY, null);
                 } else {
                     LOG.warn("OpenTracing: could not find managed span for exchange=" + exchange);
                 }