private void applyRetryPolicy()

in client/src/main/java/org/apache/cassandra/sidecar/client/RequestExecutor.java [256:280]


    private void applyRetryPolicy(CompletableFuture<HttpResponse> future,
                                  Iterator<SidecarInstance> iterator,
                                  SidecarInstance sidecarInstance,
                                  RequestContext context,
                                  final int attempt,
                                  HttpResponse response,
                                  Throwable throwable)
    {
        boolean retryOnNewHost = iterator.hasNext();
        // check status code and apply retry policy on invalid status code
        Request request = context.request();
        context.retryPolicy()
               .onResponse(future, request, response, throwable, attempt, retryOnNewHost, (nextAttempt, delay) -> {
            String statusCode = response != null ? String.valueOf(response.statusCode()) : "<Not Available>";
            SidecarInstance nextInstance = iterator.hasNext() ? iterator.next() : sidecarInstance;
            if (response == null || response.statusCode() != HttpResponseStatus.ACCEPTED.code())
            {
                logger.warn("Retrying request on {} instance after {}ms. " +
                            "Failed on instance={}, attempt={}, statusCode={}",
                            nextInstance == sidecarInstance ? "same" : "next", delay,
                            sidecarInstance, attempt, statusCode, throwable);
            }
            schedule(delay, () -> executeWithRetries(future, iterator, nextInstance, context, nextAttempt));
        });
    }