Repository: cxf
Updated Branches:
  refs/heads/master 580366ccf -> e2ec36443


CXF-6360: Integration with Apache HTrace


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

Branch: refs/heads/master
Commit: e2ec3644381789e0cabf40262139940aa33bc7c1
Parents: 580366c
Author: reta <[email protected]>
Authored: Thu May 21 20:01:44 2015 -0400
Committer: reta <[email protected]>
Committed: Thu May 21 20:01:44 2015 -0400

----------------------------------------------------------------------
 .../jaxrs/tracing/htrace/HTraceProvider.java    | 23 ++++++--------------
 1 file changed, 7 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/e2ec3644/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/jaxrs/tracing/htrace/HTraceProvider.java
----------------------------------------------------------------------
diff --git 
a/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/jaxrs/tracing/htrace/HTraceProvider.java
 
b/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/jaxrs/tracing/htrace/HTraceProvider.java
index 4c0977c..57dc29a 100644
--- 
a/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/jaxrs/tracing/htrace/HTraceProvider.java
+++ 
b/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/jaxrs/tracing/htrace/HTraceProvider.java
@@ -44,19 +44,10 @@ import static 
org.apache.cxf.tracing.TracerHeaders.HEADER_TRACE_ID;
 @Provider
 public class HTraceProvider implements ContainerRequestFilter, 
ContainerResponseFilter { 
     private static final Logger LOG = 
LogUtils.getL7dLogger(HTraceProvider.class);
+    private static final String TRACE_SPAN = 
"org.apache.cxf.jaxrs.tracing.htrace.span";
         
     private final Sampler< ? > sampler;
     
-    // Keep the parent spans in the thread-local storage. The span created 
during request
-    // phase should be closed during the response phase in order to mark the 
start/end 
-    // bounds 
-    private final ThreadLocal<TraceScope> parent = new 
ThreadLocal<TraceScope>() {
-        @Override
-        protected TraceScope initialValue() {
-            return null;
-        }
-    };
-    
     public HTraceProvider() {
         this(NeverSampler.INSTANCE);
     }
@@ -79,8 +70,8 @@ public class HTraceProvider implements 
ContainerRequestFilter, ContainerResponse
             Tracer.DONT_TRACE.spanId); 
         
         if (traceId != Tracer.DONT_TRACE.traceId && spanId != 
Tracer.DONT_TRACE.spanId) {
-            parent.set(Trace.startSpan(requestContext.getUriInfo().getPath(), 
(Sampler< TraceInfo >)sampler,
-                new TraceInfo(traceId, spanId)));
+            requestContext.setProperty(TRACE_SPAN, 
Trace.startSpan(requestContext.getUriInfo().getPath(), 
+                (Sampler< TraceInfo >)sampler, new TraceInfo(traceId, 
spanId)));
         }
     }
     
@@ -95,10 +86,10 @@ public class HTraceProvider implements 
ContainerRequestFilter, ContainerResponse
             responseContext.getHeaders().add(HEADER_SPAN_ID, 
headers.getFirst(HEADER_SPAN_ID));
         }
         
-        try (final TraceScope span = parent.get()) {
-            if (span != null) {
-                parent.remove();
-            }
+        final Object value = requestContext.getProperty(TRACE_SPAN);
+        if (value instanceof TraceScope) {
+            final TraceScope span = (TraceScope)value;
+            span.close();
         }
     }
     

Reply via email to