@Override public void filter(ClientRequestContext clientRequestContext) throws IOException { final HttpClientRequest req = new JaxRs2HttpClientRequest(clientRequestContext); requestInterceptor.handle(new HttpClientRequestAdapter(req, spanNameProvider)); } }
/** * Handles outgoing request. * * @param adapter The adapter deals with implementation specific details. */ public void handle(ClientRequestAdapter adapter) { SpanId spanId = clientTracer.startNewSpan(adapter.getSpanName()); if (spanId == null) { // We will not trace this request. adapter.addSpanIdToRequest(null); } else { adapter.addSpanIdToRequest(spanId); for (KeyValueAnnotation annotation : adapter.requestAnnotations()) { clientTracer.submitBinaryAnnotation(annotation.getKey(), annotation.getValue()); } recordClientSentAnnotations(adapter.serverAddress()); } }
clientRequestInterceptor = new ClientRequestInterceptor(clientTracer); clientResponseInterceptor = new ClientResponseInterceptor(clientTracer);
/** * Handles outgoing request. * * @param adapter The adapter deals with implementation specific details. */ public void handle(ClientRequestAdapter adapter) { SpanId context = clientTracer.startNewSpan(adapter.getSpanName()); if (context == null) { // We will not trace this request. adapter.addSpanIdToRequest(null); } else { adapter.addSpanIdToRequest(context); for (KeyValueAnnotation annotation : adapter.requestAnnotations()) { clientTracer.submitBinaryAnnotation(annotation.getKey(), annotation.getValue()); } recordClientSentAnnotations(adapter.serverAddress()); } }
private Brave(Builder builder) { serverTracer = ServerTracer.builder() .randomGenerator(builder.random) .spanCollector(builder.spanCollector) .state(builder.state) .traceSampler(builder.sampler).build(); clientTracer = ClientTracer.builder() .randomGenerator(builder.random) .spanCollector(builder.spanCollector) .state(builder.state) .traceSampler(builder.sampler).build(); localTracer = LocalTracer.builder() .randomGenerator(builder.random) .spanCollector(builder.spanCollector) .spanAndEndpoint(SpanAndEndpoint.LocalSpanAndEndpoint.create(builder.state)) .traceSampler(builder.sampler).build(); serverRequestInterceptor = new ServerRequestInterceptor(serverTracer); serverResponseInterceptor = new ServerResponseInterceptor(serverTracer); clientRequestInterceptor = new ClientRequestInterceptor(clientTracer); clientResponseInterceptor = new ClientResponseInterceptor(clientTracer); serverSpanAnnotationSubmitter = AnnotationSubmitter.create(SpanAndEndpoint.ServerSpanAndEndpoint.create(builder.state)); serverSpanThreadBinder = new ServerSpanThreadBinder(builder.state); clientSpanThreadBinder = new ClientSpanThreadBinder(builder.state); } }
Span startSpan(HttpClientRequest request) { HttpClientRequestAdapter adapter = new HttpClientRequestAdapter(request, nameProvider); requestInterceptor.handle(adapter); Span span = clientSpanThreadBinder.getCurrentClientSpan(); clientSpanThreadBinder.setCurrentSpan(null); return span; }
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { if ("com.alibaba.dubbo.monitor.MonitorService".equals(invoker.getInterface().getName())) { return invoker.invoke(invocation); } RpcContext context = RpcContext.getContext(); clientRequestInterceptor.handle(new DubboClientRequestAdapter(context, invocation)); Result result = invoker.invoke(invocation); clientResponseInterceptor.handle(new DubboClientResponseAdapter(result)); return result; }
@Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { clientRequestInterceptor.handle(new DubboClientRequestAdapter(invoker,invocation)); try{ Result rpcResult = invoker.invoke(invocation); clientResponseInterceptor.handle(new DubboClientResponseAdapter(rpcResult)); return rpcResult; }catch (Exception ex){ clientResponseInterceptor.handle(new DubboClientResponseAdapter(ex)); throw ex; }finally { clientSpanThreadBinder.setCurrentSpan(null); } } }
public Result invoke(Invoker<?> arg0, Invocation arg1) throws RpcException { clientRequestInterceptor.handle(new GrpcClientRequestAdapter(arg1)); Map<String,String> att = arg1.getAttachments(); final Span currentClientSpan = clientSpanThreadBinder.getCurrentClientSpan(); Result result ; try { result = arg0.invoke(arg1); clientSpanThreadBinder.setCurrentSpan(currentClientSpan); clientResponseInterceptor.handle(new GrpcClientResponseAdapter(result)); } finally { clientSpanThreadBinder.setCurrentSpan(null); } return result; }
@Override public Response execute(Request request, Request.Options options) throws IOException { Map<String, Collection<String>> traceHeaders = new HashMap<>(); traceHeaders.putAll(request.headers()); Request wrappedRequest = Request.create(request.method(), request.url(), traceHeaders, request.body(), request.charset()); HttpClientRequest httpClientRequest = new TraceableHttpClientRequest(wrappedRequest); ClientRequestAdapter adapter = new HttpClientRequestAdapter(httpClientRequest, new DefaultSpanNameProvider()); requestInterceptor.handle(adapter); Response response = clientDelegate.execute(wrappedRequest, options); HttpResponse httpResponse = new TraceableHttpClientResponse(response); ClientResponseAdapter responseAdapter = new HttpClientResponseAdapter(httpResponse); responseInterceptor.handle(responseAdapter); return response; } }