public interface RetryingExecutor<ResponseT>
A retrying executor is responsible for the following operations:
- Creating first attempt RetryingFuture, which acts as a facade, hiding from client code the actual execution of scheduled retry attempts.
- Executing the actual Callable in a retriable context.
This interface is for internal/advanced use only.
public abstract 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.
the actual callable, which should be executed in a retriable context
retrying future facade
public abstract 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.
the future previously returned by #createFuture(Callable) and reused for each subsequent attempt of same operation.
submitted attempt future