Class ExponentialRetryAlgorithm (2.38.0)

public class ExponentialRetryAlgorithm implements TimedRetryAlgorithmWithContext

The timed retry algorithm which uses jittered exponential backoff factor for calculating the next attempt execution time.

This class is thread-safe.

Inheritance

java.lang.Object > ExponentialRetryAlgorithm

Constructors

ExponentialRetryAlgorithm(RetrySettings globalSettings, ApiClock clock)

public ExponentialRetryAlgorithm(RetrySettings globalSettings, ApiClock clock)

Creates a new exponential retry algorithm instance.

Parameters
NameDescription
globalSettingsRetrySettings

global retry settings (attempt independent)

clockApiClock

clock to use for time-specific calculations

Methods

createFirstAttempt()

public TimedAttemptSettings createFirstAttempt()

Creates a first attempt TimedAttemptSettings. The first attempt is configured to be executed immediately.

Returns
TypeDescription
TimedAttemptSettings

first attempt settings

createFirstAttempt(RetryingContext context)

public TimedAttemptSettings createFirstAttempt(RetryingContext context)

Creates a first attempt TimedAttemptSettings. The first attempt is configured to be executed immediately.

Parameter
NameDescription
contextRetryingContext

a RetryingContext that can contain custom RetrySettings and retryable codes

Returns
TypeDescription
TimedAttemptSettings

first attempt settings

createNextAttempt(RetryingContext context, TimedAttemptSettings previousSettings)

public TimedAttemptSettings createNextAttempt(RetryingContext context, TimedAttemptSettings previousSettings)

Creates a next attempt TimedAttemptSettings. The implementation increments the current attempt count and uses randomized exponential backoff factor for calculating next attempt execution time.

Parameters
NameDescription
contextRetryingContext

a RetryingContext that can contain custom RetrySettings and retryable codes

previousSettingsTimedAttemptSettings

previous attempt settings

Returns
TypeDescription
TimedAttemptSettings

next attempt settings

createNextAttempt(TimedAttemptSettings previousSettings)

public TimedAttemptSettings createNextAttempt(TimedAttemptSettings previousSettings)

Creates a next attempt TimedAttemptSettings. The implementation increments the current attempt count and uses randomized exponential backoff factor for calculating next attempt execution time.

Parameter
NameDescription
previousSettingsTimedAttemptSettings

previous attempt settings

Returns
TypeDescription
TimedAttemptSettings

next attempt settings

nextRandomLong(long bound)

protected long nextRandomLong(long bound)
Parameter
NameDescription
boundlong
Returns
TypeDescription
long

shouldRPCTerminate(long timeLeftMs)

protected boolean shouldRPCTerminate(long timeLeftMs)
Parameter
NameDescription
timeLeftMslong
Returns
TypeDescription
boolean

shouldRetry(RetryingContext context, TimedAttemptSettings nextAttemptSettings)

public boolean shouldRetry(RetryingContext context, TimedAttemptSettings nextAttemptSettings)

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

Parameters
NameDescription
contextRetryingContext

a RetryingContext that can contain custom RetrySettings and retryable codes. Ignored by this implementation.

nextAttemptSettingsTimedAttemptSettings

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

Returns
TypeDescription
boolean

true if nextAttemptSettings does not exceed either maxAttempts limit or totalTimeout limit, or false otherwise

shouldRetry(TimedAttemptSettings nextAttemptSettings)

public boolean shouldRetry(TimedAttemptSettings nextAttemptSettings)

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

Parameter
NameDescription
nextAttemptSettingsTimedAttemptSettings

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

Returns
TypeDescription
boolean

true if nextAttemptSettings does not exceed either maxAttempts limit or totalTimeout limit, or false otherwise