@Override public void doFilter(ServletRequest request, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) servletResponse; Span currentSpan = this.tracer.getCurrentSpan(); this.spanInjector.inject(currentSpan, response); filterChain.doFilter(request, response); } }
private Span getSpanOrCreateOne() { return trace.isTracing() ? trace.getCurrentSpan() : trace.createSpan(Thread.currentThread().getName()); }
private static void assertCurrentSpanIs(Span span) { assertThat(tracer.getCurrentSpan()).isEqualTo(span); assertThat(tracer.getCurrentSpan().getSavedSpan()).isEqualTo(span.getSavedSpan()); assertThat(OpenCensusSleuthSpanContextHolder.getCurrentSpan()).isEqualTo(span); assertThat(OpenCensusSleuthSpanContextHolder.getCurrentSpan().getSavedSpan()) .isEqualTo(span.getSavedSpan()); }
@Test public void testSpanStackAndContinue() { Span[] spans = createSpansAndAssertCurrent(3); Span original = tracer.getCurrentSpan(); assertThat(original).isEqualTo(spans[spans.length - 1]); Span parent = tracer.detach(original); assertThat(parent).isEqualTo(spans[spans.length - 2]); assertThat(tracer.getCurrentSpan()).isNull(); Span continued = tracer.continueSpan(original); assertCurrentSpanIs(continued); assertThat(continued.getSavedSpan()).isEqualTo(parent); assertThat(continued).isEqualTo(original); tracer.detach(continued); }
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { URL url = invoker.getUrl(); String spanName = url.getServiceInterface() + "." + invocation.getMethodName(); Span newSpan = tracer.createSpan(spanName); try { dubboSpanInjector.inject(newSpan, RpcContext.getContext()); newSpan.logEvent(Span.CLIENT_SEND); return invoker.invoke(invocation); } catch (RpcException e) { newSpan.tag("error", e.getMessage()); throw e; } finally { if (tracer.isTracing()) { tracer.getCurrentSpan().logEvent(Span.CLIENT_RECV); tracer.close(tracer.getCurrentSpan()); } } }
protected Span extractTraceInfo(Request request, Tracer tracer) { Span parentSpan = tracer.getCurrentSpan(); if(parentSpan==null){ Span.SpanBuilder spanBuilder = Span.builder();
@Test public void testSpanStackAndCreateAndContinue() { createSpansAndAssertCurrent(3); Span original = tracer.getCurrentSpan(); tracer.detach(original); Span root = tracer.createSpan("root"); assertCurrentSpanIs(root); Span continued = tracer.continueSpan(original); assertCurrentSpanIs(continued); assertThat(continued.getSavedSpan()).isEqualTo(root); assertThat(continued).isEqualTo(original); assertThat(continued.getSavedSpan()).isNotEqualTo(original.getSavedSpan()); tracer.detach(continued); }