in src/main/java/com/amazonaws/services/dynamodbv2/streamsadapter/AmazonDynamoDBStreamsAdapterClient.java [357:382]
public GetShardIteratorResult getShardIterator(GetShardIteratorRequest getShardIteratorRequest) {
GetShardIteratorRequestAdapter requestAdapter = new GetShardIteratorRequestAdapter(getShardIteratorRequest);
requestCache.addEntry(getShardIteratorRequest, requestAdapter);
try {
com.amazonaws.services.dynamodbv2.model.GetShardIteratorResult result = internalClient.getShardIterator(requestAdapter);
if (result!= null && result.getShardIterator() == null && result.getSdkResponseMetadata() != null) {
LOG.info("RequestId for getShardIterator call which resulted in ShardEnd: " + result.getSdkResponseMetadata().getRequestId());
}
return new GetShardIteratorResultAdapter(result);
} catch (TrimmedDataAccessException e) {
if (skipRecordsBehavior == SkipRecordsBehavior.SKIP_RECORDS_TO_TRIM_HORIZON) {
if (getShardIteratorRequest.getShardIteratorType().equals(ShardIteratorType.TRIM_HORIZON.toString())) {
throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior);
}
LOG.warn(String.format("Data has been trimmed. Intercepting DynamoDB exception and retrieving a fresh iterator %s", getShardIteratorRequest), e);
getShardIteratorRequest.setShardIteratorType(ShardIteratorType.TRIM_HORIZON);
getShardIteratorRequest.setStartingSequenceNumber(null);
return getShardIterator(getShardIteratorRequest);
} else {
throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior);
}
} catch (AmazonServiceException e) {
throw AmazonServiceExceptionTransformer.transformDynamoDBStreamsToKinesisGetShardIterator(e, skipRecordsBehavior);
}
}