Interface RetryingExecutor<ResponseT>

  • Type Parameters:
    ResponseT - response type
    All Known Subinterfaces:
    RetryingExecutorWithContext<ResponseT>
    All Known Implementing Classes:
    DirectRetryingExecutor, ScheduledRetryingExecutor

    public interface RetryingExecutor<ResponseT>
    A retrying executor is responsible for the following operations:
    1. Creating first attempt RetryingFuture, which acts as a facade, hiding from client code the actual execution of scheduled retry attempts.
    2. Executing the actual Callable in a retriable context.
    This interface is for internal/advanced use only.
    • Method Detail

      • createFuture

        RetryingFuture<ResponseT> createFuture​(Callable<ResponseT> callable)
        Creates the RetryingFuture, which is a facade, returned to the client code to wait for any retriable operation to complete.
        Parameters:
        callable - the actual callable, which should be executed in a retriable context
        Returns:
        retrying future facade
      • submit

        ApiFuture<ResponseT> submit​(RetryingFuture<ResponseT> retryingFuture)
        Submits an attempt for execution. A typical implementation will either try to execute the attempt in the current thread or schedule it for an execution, using some sort of async execution service.
        Parameters:
        retryingFuture - the future previously returned by createFuture(Callable) and reused for each subsequent attempt of same operation.
        Returns:
        submitted attempt future