Class RetryAlgorithm<ResponseT> (2.12.2)

public class RetryAlgorithm<ResponseT>

The retry algorithm, which makes decision based either on the thrown exception or the returned response, and the execution time settings of the previous attempt.

This class is thread-safe.

Inheritance

java.lang.Object > RetryAlgorithm<ResponseT>

Type Parameter

NameDescription
ResponseT

Constructors

RetryAlgorithm(ResultRetryAlgorithm<ResponseT> resultAlgorithm, TimedRetryAlgorithm timedAlgorithm) (deprecated)

public RetryAlgorithm(ResultRetryAlgorithm<ResponseT> resultAlgorithm, TimedRetryAlgorithm timedAlgorithm)

Deprecated. use RetryAlgorithm#RetryAlgorithm(ResultRetryAlgorithmWithContext, TimedRetryAlgorithmWithContext) instead

Creates a new retry algorithm instance, which uses thrown exception or returned response and timed algorithms to make a decision. The result algorithm has higher priority than the timed algorithm.

Instances that are created using this constructor will ignore the RetryingContext that is passed in to the retrying methods. Use #RetryAlgorithm(ResultRetryAlgorithmWithContext, TimedRetryAlgorithmWithContext) to create an instance that will respect the RetryingContext.

Parameters
NameDescription
resultAlgorithmResultRetryAlgorithm<ResponseT>

result algorithm to use

timedAlgorithmTimedRetryAlgorithm

timed algorithm to use

RetryAlgorithm(ResultRetryAlgorithmWithContext<ResponseT> resultAlgorithm, TimedRetryAlgorithmWithContext timedAlgorithm)

public RetryAlgorithm(ResultRetryAlgorithmWithContext<ResponseT> resultAlgorithm, TimedRetryAlgorithmWithContext timedAlgorithm)

Creates a new retry algorithm instance, which uses thrown exception or returned response and timed algorithms to make a decision. The result algorithm has higher priority than the timed algorithm.

Parameters
NameDescription
resultAlgorithmResultRetryAlgorithmWithContext<ResponseT>

result algorithm to use

timedAlgorithmTimedRetryAlgorithmWithContext

timed algorithm to use

Methods

createFirstAttempt() (deprecated)

public TimedAttemptSettings createFirstAttempt()

Deprecated. use #createFirstAttempt(RetryingContext) instead

Creates a first attempt TimedAttemptSettings.

Returns
TypeDescription
TimedAttemptSettings

first attempt settings

createFirstAttempt(RetryingContext context)

public TimedAttemptSettings createFirstAttempt(RetryingContext context)

Creates a first attempt TimedAttemptSettings.

Parameter
NameDescription
contextRetryingContext

the RetryingContext that can be used to get the initial RetrySettings

Returns
TypeDescription
TimedAttemptSettings

first attempt settings

createNextAttempt(RetryingContext context, Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings previousSettings)

public TimedAttemptSettings createNextAttempt(RetryingContext context, Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings previousSettings)

Creates a next attempt TimedAttemptSettings. This method will return first non-null value, returned by either result or timed retry algorithms in that particular order.

Parameters
NameDescription
contextRetryingContext

the RetryingContext that can be used to determine the RetrySettings for the next attempt

previousThrowableThrowable

exception thrown by the previous attempt or null if a result was returned instead

previousResponseResponseT

response returned by the previous attempt or null if an exception was thrown instead

previousSettingsTimedAttemptSettings

previous attempt settings

Returns
TypeDescription
TimedAttemptSettings

next attempt settings, can be null, if there should be no new attempt

createNextAttempt(Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings previousSettings) (deprecated)

public TimedAttemptSettings createNextAttempt(Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings previousSettings)

Deprecated. use #createNextAttempt(RetryingContext, Throwable, Object, TimedAttemptSettings) instead

Creates a next attempt TimedAttemptSettings. This method will return first non-null value, returned by either result or timed retry algorithms in that particular order.

Parameters
NameDescription
previousThrowableThrowable

exception thrown by the previous attempt or null if a result was returned instead

previousResponseResponseT

response returned by the previous attempt or null if an exception was thrown instead

previousSettingsTimedAttemptSettings

previous attempt settings

Returns
TypeDescription
TimedAttemptSettings

next attempt settings, can be null, if no there should be no new attempt

getResultAlgorithm()

public ResultRetryAlgorithm<ResponseT> getResultAlgorithm()
Returns
TypeDescription
ResultRetryAlgorithm<ResponseT>

getTimedAlgorithm()

public TimedRetryAlgorithm getTimedAlgorithm()
Returns
TypeDescription
TimedRetryAlgorithm

shouldRetry(RetryingContext context, Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings nextAttemptSettings)

public boolean shouldRetry(RetryingContext context, Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings nextAttemptSettings)

Returns true if another attempt should be made, or false otherwise.

Parameters
NameDescription
contextRetryingContext

the RetryingContext that can be used to determine whether another attempt should be made

previousThrowableThrowable

exception thrown by the previous attempt or null if a result was returned instead

previousResponseResponseT

response returned by the previous attempt or null if an exception was thrown instead

nextAttemptSettingsTimedAttemptSettings

attempt settings, which will be used for the next attempt, if accepted

Returns
TypeDescription
boolean

true if another attempt should be made, or false otherwise

Exceptions
TypeDescription
CancellationException

if the retrying process should be cancelled

shouldRetry(Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings nextAttemptSettings) (deprecated)

public boolean shouldRetry(Throwable previousThrowable, ResponseT previousResponse, TimedAttemptSettings nextAttemptSettings)

Deprecated. use #shouldRetry(RetryingContext, Throwable, Object, TimedAttemptSettings) instead

Returns true if another attempt should be made, or false otherwise.

Parameters
NameDescription
previousThrowableThrowable

exception thrown by the previous attempt or null if a result was returned instead

previousResponseResponseT

response returned by the previous attempt or null if an exception was thrown instead

nextAttemptSettingsTimedAttemptSettings

attempt settings, which will be used for the next attempt, if accepted

Returns
TypeDescription
boolean

true if another attempt should be made, or false otherwise

Exceptions
TypeDescription
CancellationException

if the retrying process should be canceled