@Override public void addTag(String key, String value) { Span s = getCurrentSpan(); if (s != null && s.isExportable()) { s.tag(key, value); } }
@Override public Object intercept(Invocation invocation) throws Throwable { Object returnValue = null; MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; String sqlId = mappedStatement.getId(); long start = System.currentTimeMillis(); returnValue = invocation.proceed(); long end = System.currentTimeMillis(); long time = (end - start); if(spanAccessor == null || spanAccessor.getCurrentSpan() == null){ return returnValue; } try { BoundSql boundSql = mappedStatement.getBoundSql(invocation.getArgs()[1]); String sql = boundSql.getSql(); Span span = spanAccessor.getCurrentSpan(); StringBuilder builder = new StringBuilder(sql).append(" :").append(time).append("ms"); span.tag(sqlId, builder.toString()); } catch (Exception e) { logger.warn("ZipkinInterceptor error: {}", e); } return returnValue; }
/** * process trace in server end * * @param caller * @param request * @return */ protected Response processProviderTrace(Tracer tracer, Caller<?> caller, Request request) { Span span = extractTraceInfo(request, tracer); span.tag("requestId", String.valueOf(request.getRequestId())); span.logEvent(Span.SERVER_RECV); SleuthTracingContext.setActiveSpan(span); return process(tracer,caller, request, span); }
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.tag("error", e.getMessage()); throw e; } finally {