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