Package io.tarantool.driver.api.retry
Class TarantoolRequestRetryPolicies.AttemptsBoundRetryPolicy<T extends Predicate<Throwable>>
- java.lang.Object
-
- io.tarantool.driver.api.retry.TarantoolRequestRetryPolicies.AttemptsBoundRetryPolicy<T>
-
- Type Parameters:
T
- exception checking predicate type
- All Implemented Interfaces:
RequestRetryPolicy
- Enclosing class:
- TarantoolRequestRetryPolicies
public static final class TarantoolRequestRetryPolicies.AttemptsBoundRetryPolicy<T extends Predicate<Throwable>> extends Object implements RequestRetryPolicy
Retry policy that accepts a maximum number of attempts and an exception checking predicate. If the exception check passes and there are any attempts left, the policy returnstrue
.
-
-
Constructor Summary
Constructors Constructor Description AttemptsBoundRetryPolicy(int attempts, long requestTimeout, long delay, T exceptionCheck)
Basic constructor with timeout
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canRetryRequest(Throwable throwable)
A callback called when the request ends with an exception.long
getRequestTimeout()
Get timeout value for one retry attempt.<R> CompletableFuture<R>
wrapOperation(Supplier<CompletableFuture<R>> operation, Executor executor)
Wrap a generic operation taking an arbitrary number of arguments and returning aCompletableFuture
.
-
-
-
Constructor Detail
-
AttemptsBoundRetryPolicy
public AttemptsBoundRetryPolicy(int attempts, long requestTimeout, long delay, T exceptionCheck)
Basic constructor with timeout- Parameters:
attempts
- maximum number of retry attemptsrequestTimeout
- timeout for one retry attempt, in millisecondsdelay
- delay between attempts, in millisecondsexceptionCheck
- predicate checking whether the given exception may be retried
-
-
Method Detail
-
getRequestTimeout
public long getRequestTimeout()
Description copied from interface:RequestRetryPolicy
Get timeout value for one retry attempt. The default value is 1 hour.- Specified by:
getRequestTimeout
in interfaceRequestRetryPolicy
- Returns:
- timeout value (ms), should be greater or equal to 0
-
canRetryRequest
public boolean canRetryRequest(Throwable throwable)
Description copied from interface:RequestRetryPolicy
A callback called when the request ends with an exception. Should returntrue
if and only if the request may be performed again (e.g. it is a timeout exception and it indicates only that the current server is overloaded). This may depend not only on the exception type, but also on the other conditions like the allowed number of retries or the maximum request execution time.Effective use of the retry policies may be achieved by combining them with multiple server connections and a
ConnectionSelectionStrategy
.- Specified by:
canRetryRequest
in interfaceRequestRetryPolicy
- Parameters:
throwable
- exception a request failed with- Returns:
- true if the request may be retried
-
wrapOperation
public <R> CompletableFuture<R> wrapOperation(Supplier<CompletableFuture<R>> operation, Executor executor)
Description copied from interface:RequestRetryPolicy
Wrap a generic operation taking an arbitrary number of arguments and returning aCompletableFuture
. Each operation attempt is limited with a timeout returned byRequestRetryPolicy.getRequestTimeout()
. SeeTarantoolRequestRetryPolicies.InfiniteRetryPolicy
for example of implementation.- Specified by:
wrapOperation
in interfaceRequestRetryPolicy
- Type Parameters:
R
- operation result type- Parameters:
operation
- supplier for the operation to perform. Must return a new operation instanceexecutor
- executor in which the retry callbacks will be scheduled- Returns:
CompletableFuture
with the same type as the operation result type
-
-