in src/main/java/com/amazonaws/services/dynamodbv2/streamsadapter/model/AmazonServiceExceptionTransformer.java [210:235]
public static AmazonServiceException transformDynamoDBStreamsToKinesisGetRecords(AmazonServiceException ase, SkipRecordsBehavior skipRecordsBehavior) {
final AmazonServiceException transformed;
if (ase == null) {
return ase;
}
if (ase instanceof com.amazonaws.services.dynamodbv2.model.ExpiredIteratorException) { // (1)
transformed = new com.amazonaws.services.kinesis.model.ExpiredIteratorException(buildErrorMessage(ase));
} else if (ase instanceof InternalServerErrorException) { // (2)
transformed = new AmazonServiceException(buildErrorMessage(ase), ase);
} else if (ase instanceof com.amazonaws.services.dynamodbv2.model.LimitExceededException) { // (3)
transformed = new com.amazonaws.services.kinesis.model.ProvisionedThroughputExceededException(buildErrorMessage(ase));
} else if (ase instanceof com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException) { // (4)
transformed = new com.amazonaws.services.kinesis.model.ResourceNotFoundException(buildErrorMessage(ase));
} else if (DYNAMODB_STREAMS_THROTTLING_EXCEPTION_ERROR_CODE.equals(ase.getErrorCode())) { // (5)
transformed = new com.amazonaws.services.kinesis.model.ProvisionedThroughputExceededException(buildErrorMessage(ase));
} else if (ase instanceof com.amazonaws.services.dynamodbv2.model.TrimmedDataAccessException) { // (6)
if (skipRecordsBehavior == SkipRecordsBehavior.SKIP_RECORDS_TO_TRIM_HORIZON) { // Data loss is acceptable
transformed = new com.amazonaws.services.kinesis.model.ExpiredIteratorException(buildErrorMessage(ase));
} else { // Data loss is NOT acceptable
throw new UnableToReadMoreRecordsException("Attempted to access trimmed data. Data has been lost", ase);
}
} else {
transformed = null;
}
return applyFields(ase, transformed);
}