private void handleRetry()

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());
            }
        }
    }