in aws-xray-recorder-sdk-aws-sdk-v2/src/main/java/com/amazonaws/xray/interceptors/TracingInterceptor.java [399:430]
private void populateSubsegmentException(Subsegment subsegment, Context.FailedExecution context) {
Throwable exception = context.exception();
subsegment.addException(exception);
int statusCode = -1;
if (exception instanceof SdkServiceException) {
statusCode = ((SdkServiceException) exception).statusCode();
subsegment.getCause().setMessage(exception.getMessage());
if (((SdkServiceException) exception).isThrottlingException()) {
subsegment.setThrottle(true);
// throttling errors are considered client-side errors
subsegment.setError(true);
}
setRemoteForException(subsegment, exception);
} else if (context.httpResponse().isPresent()) {
statusCode = context.httpResponse().get().statusCode();
}
if (statusCode == -1) {
return;
}
if (statusCode >= 400 && statusCode < 500) {
subsegment.setFault(false);
subsegment.setError(true);
if (statusCode == 429) {
subsegment.setThrottle(true);
}
} else if (statusCode >= 500) {
subsegment.setFault(true);
}
}