Interface RetryingExecutor<ResponseT> (2.22.0)

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.

Type Parameter

NameDescription
ResponseT

Methods

createFuture(Callable<ResponseT> callable)

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.

Parameter
NameDescription
callableCallable<ResponseT>

the actual callable, which should be executed in a retriable context

Returns
TypeDescription
RetryingFuture<ResponseT>

retrying future facade

submit(RetryingFuture<ResponseT> retryingFuture)

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.

Parameter
NameDescription
retryingFutureRetryingFuture<ResponseT>

the future previously returned by #createFuture(Callable) and reused for each subsequent attempt of same operation.

Returns
TypeDescription
ApiFuture<ResponseT>

submitted attempt future