Package org.jclouds.http.handlers
Class BackoffLimitedRetryHandler
- java.lang.Object
-
- org.jclouds.http.handlers.BackoffLimitedRetryHandler
-
- All Implemented Interfaces:
HttpRetryHandler,IOExceptionRetryHandler
- Direct Known Subclasses:
AWSEC2IOExceptionRetryHandler,AWSServerErrorRetryHandler,AzureRetryableErrorHandler,B2RetryHandler,InvalidateSessionAndRetryOn401AndLogoutOnClose,SessionManager
@Singleton public class BackoffLimitedRetryHandler extends Object implements HttpRetryHandler, IOExceptionRetryHandler
Allow replayable request to be retried a limited number of times, and impose an exponential back-off delay before returning.The back-off delay grows rapidly according to the formula
50 * (. For example:TransformingHttpCommand#getFailureCount()^ 2)Number of Attempts Delay in milliseconds 1 50 2 200 3 450 4 800 5 1250 This implementation has two side-effects. It increments the command's failure count with
TransformingHttpCommand#incrementFailureCount(), because this failure count value is used to determine how many times the command has already been tried. It also closes the response's content input stream to ensure connections are cleaned up.
-
-
Field Summary
Fields Modifier and Type Field Description static BackoffLimitedRetryHandlerINSTANCEprotected Loggerlogger-
Fields inherited from interface org.jclouds.http.HttpRetryHandler
ALWAYS_RETRY, NEVER_RETRY
-
Fields inherited from interface org.jclouds.http.IOExceptionRetryHandler
ALWAYS_RETRY, NEVER_RETRY
-
-
Constructor Summary
Constructors Constructor Description BackoffLimitedRetryHandler()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidimposeBackoffExponentialDelay(int failureCount, String commandDescription)voidimposeBackoffExponentialDelay(long period, int pow, int failureCount, int max, String commandDescription)voidimposeBackoffExponentialDelay(long period, long maxPeriod, int pow, int failureCount, int max, String commandDescription)booleanshouldRetryRequest(HttpCommand command, IOException error)booleanshouldRetryRequest(HttpCommand command, HttpResponse response)Return true if the command should be retried.
-
-
-
Field Detail
-
INSTANCE
public static final BackoffLimitedRetryHandler INSTANCE
-
logger
protected Logger logger
-
-
Method Detail
-
shouldRetryRequest
public boolean shouldRetryRequest(HttpCommand command, IOException error)
- Specified by:
shouldRetryRequestin interfaceIOExceptionRetryHandler
-
shouldRetryRequest
public boolean shouldRetryRequest(HttpCommand command, HttpResponse response)
Description copied from interface:HttpRetryHandlerReturn true if the command should be retried. This method should only be invoked when the response has failed with a HTTP 5xx error indicating a server-side error.- Specified by:
shouldRetryRequestin interfaceHttpRetryHandler
-
imposeBackoffExponentialDelay
public void imposeBackoffExponentialDelay(int failureCount, String commandDescription)
-
imposeBackoffExponentialDelay
public void imposeBackoffExponentialDelay(long period, int pow, int failureCount, int max, String commandDescription)
-
imposeBackoffExponentialDelay
public void imposeBackoffExponentialDelay(long period, long maxPeriod, int pow, int failureCount, int max, String commandDescription)
-
-