void log(String msg) { Span logServiceSpan = this.tracer.createSpan("logService"); try { LOGGER.info(msg); } finally { this.tracer.close(logServiceSpan); } } }
String getTimeAsString() { Span dateServiceSpan = this.tracer.createSpan("dateService"); try { LOGGER.info("Returning time as String"); dateServiceSpan.logEvent("This is my date service event"); return LocalDateTime.now().toString(); } finally { this.tracer.close(dateServiceSpan); } } }
@Test public void testSpanStackAndCloseOutOfOrder() { Span[] spans = createSpansAndAssertCurrent(3); // try to close a non-current span tracer.close(spans[spans.length - 2]); assertCurrentSpanIs(spans[spans.length - 1]); // pop the stack for (int i = spans.length - 1; i >= 0; i--) { tracer.close(spans[i]); } }
@Test public void testRootSpanAndClose() { Span root = tracer.createSpan("root"); assertCurrentSpanIs(root); assertThat(root.getSavedSpan()).isNull(); Span parent = tracer.close(root); assertThat(parent).isNull(); }
@Test public void testSpanStackAndClose() { Span[] spans = createSpansAndAssertCurrent(3); // pop the stack for (int i = spans.length - 1; i >= 0; i--) { assertCurrentSpanIs(spans[i]); Span parent = tracer.close(spans[i]); assertThat(parent).isEqualTo(spans[i].getSavedSpan()); } }
tracer.close(span); } catch (Exception e) { LoggerUtil.error("opentracing span finish error!", e);
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()); } } }
span.logEvent(Span.SERVER_SEND); tracer.close(span);