in powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspect.java [43:79]
public Object around(ProceedingJoinPoint pjp,
Metrics metrics) throws Throwable {
Object[] proceedArgs = pjp.getArgs();
if (isHandlerMethod(pjp)
&& (placedOnRequestHandler(pjp)
|| placedOnStreamHandler(pjp))) {
MetricsLogger logger = metricsLogger();
refreshMetricsContext(metrics);
logger.setNamespace(namespace(metrics));
Context extractedContext = extractContext(pjp);
if( null != extractedContext) {
coldStartSingleMetricIfApplicable(extractedContext.getAwsRequestId(), extractedContext.getFunctionName(), metrics);
logger.putProperty(REQUEST_ID_PROPERTY, extractedContext.getAwsRequestId());
}
LambdaHandlerProcessor.getXrayTraceId()
.ifPresent(traceId -> logger.putProperty(TRACE_ID_PROPERTY, traceId));
try {
return pjp.proceed(proceedArgs);
} finally {
coldStartDone();
validateMetricsAndRefreshOnFailure(metrics);
logger.flush();
refreshMetricsContext(metrics);
}
}
return pjp.proceed(proceedArgs);
}