public abstract class BaseRetryStrategy extends Object implements DefaultAwareRetryStrategy
| Modifier and Type | Class and Description |
|---|---|
static class |
BaseRetryStrategy.Builder |
| Modifier and Type | Field and Description |
|---|---|
protected BackoffStrategy |
backoffStrategy |
protected boolean |
circuitBreakerEnabled |
protected Set<String> |
defaultsAdded |
protected int |
exceptionCost |
protected Logger |
log |
protected int |
maxAttempts |
protected List<Predicate<Throwable>> |
retryPredicates |
protected BackoffStrategy |
throttlingBackoffStrategy |
protected TokenBucketStore |
tokenBucketStore |
protected Predicate<Throwable> |
treatAsThrottling |
protected boolean |
useClientDefaults |
| Modifier and Type | Method and Description |
|---|---|
AcquireInitialTokenResponse |
acquireInitialToken(AcquireInitialTokenRequest request)
This method implements the logic of
RetryStrategy.acquireInitialToken(AcquireInitialTokenRequest). |
DefaultAwareRetryStrategy |
addDefaults(RetryStrategyDefaults retryStrategyDefaults)
Add the specified defaults to this retry strategy
|
protected Duration |
computeBackoff(RefreshRetryTokenRequest request,
DefaultRetryToken token)
Computes the backoff before a retry using the configured backoff strategy.
|
protected Duration |
computeInitialBackoff(AcquireInitialTokenRequest request)
Computes the backoff before the first attempt, by default
Duration.ZERO. |
protected int |
exceptionCost(RefreshRetryTokenRequest request)
Returns the amount of tokens to withdraw from the token bucket.
|
boolean |
hasRetryPredicates()
Returns true if there are retry predicates configured for this retry strategy.
|
int |
maxAttempts()
Returns the maximum numbers attempts that this retry policy will allow.
|
RecordSuccessResponse |
recordSuccess(RecordSuccessRequest request)
This method implements the logic of
RetryStrategy.recordSuccess(RecordSuccessRequest). |
RefreshRetryTokenResponse |
refreshRetryToken(RefreshRetryTokenRequest request)
This method implements the logic of
RetryStrategy.refreshRetryToken(RefreshRetryTokenRequest). |
List<Predicate<Throwable>> |
retryPredicates() |
boolean |
shouldAddDefaults(String defaultPredicateName) |
String |
toString() |
protected void |
updateStateForRetry(RefreshRetryTokenRequest request)
Called inside
refreshRetryToken(com.ibm.cos.v2.retries.api.RefreshRetryTokenRequest) to allow extending classes to update their internal state before retrying a
request. |
protected void |
updateStateForSuccess(DefaultRetryToken token)
Called inside
recordSuccess(com.ibm.cos.v2.retries.api.RecordSuccessRequest) to allow extending classes to update their internal state after a successful request. |
boolean |
useClientDefaults()
Returns whether the retry strategy uses default retry predicates.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waittoBuilderprotected final Logger log
protected final int maxAttempts
protected final boolean circuitBreakerEnabled
protected final BackoffStrategy backoffStrategy
protected final BackoffStrategy throttlingBackoffStrategy
protected final int exceptionCost
protected final TokenBucketStore tokenBucketStore
protected final boolean useClientDefaults
public final AcquireInitialTokenResponse acquireInitialToken(AcquireInitialTokenRequest request)
RetryStrategy.acquireInitialToken(AcquireInitialTokenRequest).acquireInitialToken in interface RetryStrategyRetryStrategy.acquireInitialToken(AcquireInitialTokenRequest)public final RefreshRetryTokenResponse refreshRetryToken(RefreshRetryTokenRequest request)
RetryStrategy.refreshRetryToken(RefreshRetryTokenRequest).refreshRetryToken in interface RetryStrategyRetryStrategy.refreshRetryToken(RefreshRetryTokenRequest)public final RecordSuccessResponse recordSuccess(RecordSuccessRequest request)
RetryStrategy.recordSuccess(RecordSuccessRequest).recordSuccess in interface RetryStrategyRetryStrategy.recordSuccess(RecordSuccessRequest)public int maxAttempts()
RetryStrategymaxAttempts in interface RetryStrategypublic boolean useClientDefaults()
RetryStrategyuseClientDefaults in interface RetryStrategyprotected Duration computeInitialBackoff(AcquireInitialTokenRequest request)
Duration.ZERO. Extending classes can override this method
to compute different a different depending on their logic.protected Duration computeBackoff(RefreshRetryTokenRequest request, DefaultRetryToken token)
protected void updateStateForSuccess(DefaultRetryToken token)
recordSuccess(com.ibm.cos.v2.retries.api.RecordSuccessRequest) to allow extending classes to update their internal state after a successful request.protected void updateStateForRetry(RefreshRetryTokenRequest request)
refreshRetryToken(com.ibm.cos.v2.retries.api.RefreshRetryTokenRequest) to allow extending classes to update their internal state before retrying a
request.protected int exceptionCost(RefreshRetryTokenRequest request)
public final boolean hasRetryPredicates()
public boolean shouldAddDefaults(String defaultPredicateName)
public DefaultAwareRetryStrategy addDefaults(RetryStrategyDefaults retryStrategyDefaults)
DefaultAwareRetryStrategyaddDefaults in interface DefaultAwareRetryStrategyretryStrategyDefaults - the defaults to add to this strategyCopyright © 2026. All rights reserved.