public static Subsegment beginSubsegment(String name) { return globalRecorder.beginSubsegment(name); }
public static Subsegment beginSubsegment(String name) { return globalRecorder.beginSubsegment(name); }
/** * Begins a subsegment and passes it to the supplied consumer. Intercepts exceptions, adds them to the subsegment, and re-throws them. * * @param name * the name to use for the created subsegment * @param consumer * the function to invoke */ public void createSubsegment(String name, Consumer<Subsegment> consumer) { Subsegment subsegment = beginSubsegment(name); try { consumer.accept(subsegment); } catch (Exception e) { if (subsegment != null) { subsegment.addException(e); } throw e; } finally { endSubsegment(); } }
@Override public <T> T execute(final HttpHost target, final HttpRequest request, final ResponseHandler<? extends T> responseHandler, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(target, request, wrappedHandler, context); return response; }); }
@Override public <T> T execute(final HttpHost target, final HttpRequest request, final ResponseHandler<? extends T> responseHandler) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(target, request, wrappedHandler); return response; }); }
@Override public <T> T execute(final HttpHost target, final HttpRequest request, final ResponseHandler<? extends T> responseHandler, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(target, request, wrappedHandler, context); return response; }); }
@Override public <T> T execute(final HttpHost target, final HttpRequest request, final ResponseHandler<? extends T> responseHandler) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(target, request, wrappedHandler); return response; }); }
@Override public CloseableHttpResponse execute( final HttpHost target, final HttpRequest request) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } CloseableHttpResponse response = wrappedClient.execute(target, request); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public CloseableHttpResponse execute( final HttpHost target, final HttpRequest request) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } CloseableHttpResponse response = wrappedClient.execute(target, request); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public CloseableHttpResponse execute( final HttpHost target, final HttpRequest request, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } CloseableHttpResponse response = wrappedClient.execute(target, request, context); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public CloseableHttpResponse execute( final HttpHost target, final HttpRequest request, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(target.getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(target, request)); } CloseableHttpResponse response = wrappedClient.execute(target, request, context); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public <T> T execute(final HttpUriRequest request, final ResponseHandler<? extends T> responseHandler, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(request, wrappedHandler, context); return response; }); }
@Override public <T> T execute(final HttpUriRequest request, final ResponseHandler<? extends T> responseHandler, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(request, wrappedHandler, context); return response; }); }
@Override public <T> T execute(final HttpUriRequest request, final ResponseHandler<? extends T> responseHandler) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(request, wrappedHandler); return response; }); }
@Override public <T> T execute(final HttpUriRequest request, final ResponseHandler<? extends T> responseHandler) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } TracedResponseHandler<? extends T> wrappedHandler = new TracedResponseHandler<>(responseHandler); T response = wrappedClient.execute(request, wrappedHandler); return response; }); }
@Override public CloseableHttpResponse execute( final HttpUriRequest request) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } CloseableHttpResponse response = wrappedClient.execute(request); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public CloseableHttpResponse execute( final HttpUriRequest request) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } CloseableHttpResponse response = wrappedClient.execute(request); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public CloseableHttpResponse execute( final HttpUriRequest request, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } CloseableHttpResponse response = wrappedClient.execute(request, context); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public CloseableHttpResponse execute( final HttpUriRequest request, final HttpContext context) throws IOException, ClientProtocolException { Subsegment subsegment = recorder.beginSubsegment(determineTarget(request).getHostName()); return wrapHttpSupplier(subsegment, () -> { if (null != subsegment) { TracedHttpClient.addRequestInformation(subsegment, request, TracedHttpClient.getUrl(request)); } CloseableHttpResponse response = wrappedClient.execute(request, context); if (null != subsegment) { TracedResponseHandler.addResponseInformation(subsegment, response); } return response; }); }
@Override public void beforeExecution(Context.BeforeExecution context, ExecutionAttributes executionAttributes) { AWSXRayRecorder recorder = getRecorder(); Entity origin = recorder.getTraceEntity(); Subsegment subsegment = recorder.beginSubsegment(executionAttributes.getAttribute((SdkExecutionAttribute.SERVICE_NAME))); if (subsegment == null) { return; } subsegment.setNamespace(Namespace.AWS.toString()); subsegment.putAws(EntityDataKeys.AWS.OPERATION_KEY, executionAttributes.getAttribute(SdkExecutionAttribute.OPERATION_NAME)); Region region = executionAttributes.getAttribute(AwsExecutionAttribute.AWS_REGION); if (region != null) { subsegment.putAws(EntityDataKeys.AWS.REGION_KEY, region.id()); } subsegment.putAllAws(extractRequestParameters(context, executionAttributes)); if (accountId != null) { subsegment.putAws(EntityDataKeys.AWS.ACCOUNT_ID_SUBSEGMENT_KEY, accountId); } recorder.setTraceEntity(origin); // store the subsegment in the AWS SDK's executionAttributes so it can be accessed across threads executionAttributes.putAttribute(entityKey, subsegment); }