Class ExponentialRetryAlgorithm (2.58.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
Name Description
globalSettings RetrySettings

global retry settings (attempt independent)

clock ApiClock

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
Type Description
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
Name Description
context RetryingContext

a RetryingContext that can contain custom RetrySettings and retryable codes

Returns
Type Description
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
Name Description
context RetryingContext

a RetryingContext that can contain custom RetrySettings and retryable codes

previousSettings TimedAttemptSettings

previous attempt settings

Returns
Type Description
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
Name Description
previousSettings TimedAttemptSettings

previous attempt settings

Returns
Type Description
TimedAttemptSettings

next attempt settings

nextRandomLong(long bound)

protected long nextRandomLong(long bound)
Parameter
Name Description
bound long
Returns
Type Description
long

shouldRPCTerminate(long timeLeftMs)

protected boolean shouldRPCTerminate(long timeLeftMs)
Parameter
Name Description
timeLeftMs long
Returns
Type Description
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
Name Description
context RetryingContext

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

nextAttemptSettings TimedAttemptSettings

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

Returns
Type Description
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
Name Description
nextAttemptSettings TimedAttemptSettings

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

Returns
Type Description
boolean

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