in powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java [42:80]
public Object around(ProceedingJoinPoint pjp,
Tracing tracing) throws Throwable {
Object[] proceedArgs = pjp.getArgs();
Subsegment segment = AWSXRay.beginSubsegment(
customSegmentNameOrDefault(tracing,
() -> "## " + pjp.getSignature().getName()));
segment.setNamespace(namespace(tracing));
if (placedOnHandlerMethod(pjp)) {
segment.putAnnotation("ColdStart", isColdStart());
segment.putAnnotation("Service", namespace(tracing));
}
boolean captureResponse = captureResponse(tracing);
boolean captureError = captureError(tracing);
try {
Object methodReturn = pjp.proceed(proceedArgs);
if (captureResponse) {
segment.putMetadata(namespace(tracing), pjp.getSignature().getName() + " response", null != objectMapper() ? objectMapper().writeValueAsString(methodReturn): methodReturn);
}
if (placedOnHandlerMethod(pjp)) {
coldStartDone();
}
return methodReturn;
} catch (Exception e) {
if (captureError) {
segment.putMetadata(namespace(tracing), pjp.getSignature().getName() + " error", null != objectMapper() ? objectMapper().writeValueAsString(e) : e);
}
throw e;
} finally {
if (!isSamLocal()) {
AWSXRay.endSubsegment();
}
}
}