in data-prepper-plugins/opensearch/src/main/java/com/amazon/dataprepper/plugins/sink/opensearch/BulkRetryStrategy.java [85:124]
private void handleRetry(final BulkRequest request, final BulkResponse response,
final BackOffUtils backOffUtils, final boolean firstAttempt) throws InterruptedException {
final BulkRequest bulkRequestForRetry = createBulkRequestForRetry(request, response);
if (backOffUtils.hasNext()) {
// Wait for backOff duration
backOffUtils.next();
final BulkResponse bulkResponse;
try {
bulkResponse = requestFunction.apply(bulkRequestForRetry);
} catch (final Exception e) {
if (canRetry(e)) {
handleRetry(bulkRequestForRetry, null, backOffUtils, false);
} else {
handleFailures(bulkRequestForRetry.requests(), e);
}
return;
}
if (bulkResponse.hasFailures()) {
if (canRetry(bulkResponse)) {
if (firstAttempt) {
for (final BulkItemResponse bulkItemResponse : bulkResponse.getItems()) {
if (!bulkItemResponse.isFailed()) {
sentDocumentsOnFirstAttemptCounter.increment();
}
}
}
handleRetry(bulkRequestForRetry, bulkResponse, backOffUtils, false);
} else {
handleFailures(bulkRequestForRetry.requests(), bulkResponse.getItems());
}
} else {
final int numberOfDocs = bulkRequestForRetry.numberOfActions();
if (firstAttempt) {
sentDocumentsOnFirstAttemptCounter.increment(numberOfDocs);
}
sentDocumentsCounter.increment(bulkRequestForRetry.numberOfActions());
}
}
}