private void doStoreResult()

in src/main/java/org/opensearch/search/asynchronous/service/AsynchronousSearchPersistenceService.java [358:381]


    private void doStoreResult(Iterator<TimeValue> backoff, IndexRequestBuilder indexRequestBuilder,
                               ActionListener<IndexResponse> listener) {
        indexRequestBuilder.execute(new ActionListener<IndexResponse>() {
            @Override
            public void onResponse(IndexResponse indexResponse) {
                listener.onResponse(indexResponse);
            }

            @Override
            public void onFailure(Exception e) {
                final Throwable cause = ExceptionsHelper.unwrapCause(e);
                if ((cause instanceof OpenSearchRejectedExecutionException) && backoff.hasNext()) {
                    TimeValue wait = backoff.next();
                    logger.warn(() -> new ParameterizedMessage("failed to store asynchronous search response [{}], retrying in [{}]",
                            indexRequestBuilder.request().id(), wait), e);
                    threadPool.schedule(() -> doStoreResult(backoff, indexRequestBuilder, listener), wait, ThreadPool.Names.SAME);
                } else {
                    logger.error(() -> new ParameterizedMessage("failed to store asynchronous search response [{}], not retrying",
                            indexRequestBuilder.request().id()), e);
                    listener.onFailure(e);
                }
            }
        });
    }