/** * Creates a singleton ClientTracer instance. * * @return Singleton ClientTracer instance. */ @Bean @Scope(value = "singleton") public ClientTracer clientTracer() { return Brave.getClientTracer(spanCollector, traceFilters.getTraceFilters()); } }
/** * Interface method implementation. Interprets the response and submits suitable annotation to the client tracer and also marks receipt of the response on it. * @see com.flipkart.phantom.task.spi.interceptor.ResponseInterceptor#process(java.lang.Object) */ public void process(S response, Optional<RuntimeException> transportError) { ClientTracer clientTracer = Brave.getClientTracer(this.eventDispatchingSpanCollector, this.traceFilters); if (transportError.isPresent()) { clientTracer.submitAnnotation(FAILURE_ANNOTATION); } else { final Optional<Integer> statusCode = this.getResponseStatusCode(response); if (statusCode.isPresent()) { clientTracer.submitBinaryAnnotation(RESPONSE_CODE_ANNOTATION, statusCode.get()); } if (!this.isResponseSuccess(response)) { // In this case response will be the error message. clientTracer.submitAnnotation(FAILURE_ANNOTATION); } } clientTracer.setClientReceived(); }
/** * Interface method implementation. Performs client request tracing. * @see com.flipkart.phantom.task.spi.interceptor.RequestInterceptor#process(com.flipkart.phantom.task.spi.RequestWrapper) */ public void process(T request) { // we let trace filter decide if client request tracing is needed. Handler level config takes precedence even if global trace is on. for (final TraceFilter traceFilter : traceFilters) { if (!traceFilter.trace(request.getRequestName())) { return; } } ClientTracer clientTracer = Brave.getClientTracer(this.eventDispatchingSpanCollector, this.traceFilters); String spanName = this.getSpanName(request); SpanId newSpanId = clientTracer.startNewSpan(spanName); this.addTracingHeaders(request, newSpanId, spanName); if (request.getRequestContext().isPresent() && request.getRequestContext().get().getCurrentClientEndpoint() != null) { // override the service name with the value contained in the request clientTracer.setCurrentClientServiceName(request.getRequestContext().get().getCurrentClientEndpoint().getServiceName()); // submit an annotation so that host endpoint is visible in the span clientTracer.submitBinaryAnnotation(HOST_ANNOTATION, request.getRequestContext().get().getCurrentClientEndpoint().getHost() + ":" + request.getRequestContext().get().getCurrentClientEndpoint().getPort()); } final Optional<String> requestMetadata = request.getRequestMetaData(); if (requestMetadata.isPresent()) { clientTracer.submitBinaryAnnotation(REQUEST_ANNOTATION, requestMetadata.get()); } clientTracer.setClientSent(); }