public class ExponentialRetryAlgorithm implements TimedRetryAlgorithmWithContextThe timed retry algorithm which uses jittered exponential backoff factor for calculating the next attempt execution time.
This class is thread-safe.
Implements
TimedRetryAlgorithmWithContextConstructors
ExponentialRetryAlgorithm(RetrySettings globalSettings, ApiClock clock)
public ExponentialRetryAlgorithm(RetrySettings globalSettings, ApiClock clock)Creates a new exponential retry algorithm instance.
| Parameters | |
|---|---|
| Name | Description |
globalSettings |
RetrySettingsglobal retry settings (attempt independent) |
clock |
ApiClockclock 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 |
RetryingContexta 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 |
RetryingContexta RetryingContext that can contain custom RetrySettings and retryable codes |
previousSettings |
TimedAttemptSettingsprevious 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 |
TimedAttemptSettingsprevious 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 |
RetryingContexta RetryingContext that can contain custom RetrySettings and retryable codes. Ignored by this implementation. |
nextAttemptSettings |
TimedAttemptSettingsattempt settings, which will be used for the next attempt, if accepted |
| Returns | |
|---|---|
| Type | Description |
boolean |
|
shouldRetry(TimedAttemptSettings nextAttemptSettings)
public boolean shouldRetry(TimedAttemptSettings nextAttemptSettings)Returns true if another attempt should be made, or false otherwise.
| Parameter | |
|---|---|
| Name | Description |
nextAttemptSettings |
TimedAttemptSettingsattempt settings, which will be used for the next attempt, if accepted |
| Returns | |
|---|---|
| Type | Description |
boolean |
|