org.apache.hc.client5.http.impl

## Class DefaultHttpRequestRetryStrategy

- java.lang.Object
- - org.apache.hc.client5.http.impl.DefaultHttpRequestRetryStrategy

All Implemented Interfaces:
  HttpRequestRetryStrategy

    @Contract(threading=STATELESS)
    public class DefaultHttpRequestRetryStrategy
    extends Object
    implements HttpRequestRetryStrategy

Default implementation of the `HttpRequestRetryStrategy` interface.

Since:
  5.0

### Field Summary

Fields
`static DefaultHttpRequestRetryStrategy` `INSTANCE` Default instance of `DefaultHttpRequestRetryStrategy`.

### Constructor Summary

Constructors
`` `DefaultHttpRequestRetryStrategy()` Create the HTTP request retry strategy with a max retry count of 1, default retry interval of 1 second, and using the following list of non-retriable I/O exception classes: InterruptedIOException UnknownHostException ConnectException ConnectionClosedException SSLException and retriable HTTP status codes: SC_TOO_MANY_REQUESTS (429) SC_SERVICE_UNAVAILABLE (503)
`` `DefaultHttpRequestRetryStrategy(int maxRetries, TimeValue defaultRetryInterval)` Create the HTTP request retry strategy using the following list of non-retriable I/O exception classes: InterruptedIOException UnknownHostException ConnectException ConnectionClosedException NoRouteToHostException SSLException and retriable HTTP status codes: SC_TOO_MANY_REQUESTS (429) SC_SERVICE_UNAVAILABLE (503)
`protected` `DefaultHttpRequestRetryStrategy(int maxRetries, TimeValue defaultRetryInterval, Collection<Class<? extends IOException>> clazzes, Collection<Integer> codes)`

### Method Summary

All Methods Instance Methods Concrete Methods
`TimeValue` `getRetryInterval(HttpResponse response, int execCount, HttpContext context)` Determines the retry interval between subsequent retries.
`protected boolean` `handleAsIdempotent(HttpRequest request)`
`boolean` `retryRequest(HttpRequest request, IOException exception, int execCount, HttpContext context)` Determines if a method should be retried after an I/O exception occurred during execution.
`boolean` `retryRequest(HttpResponse response, int execCount, HttpContext context)` Determines if a method should be retried given the response from the target server.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.hc.client5.http.HttpRequestRetryStrategy

`getRetryInterval`

### Field Detail

#### INSTANCE

    public static final DefaultHttpRequestRetryStrategy INSTANCE

Default instance of `DefaultHttpRequestRetryStrategy`.

### Constructor Detail

#### DefaultHttpRequestRetryStrategy

    protected DefaultHttpRequestRetryStrategy(int maxRetries,
                                              TimeValue defaultRetryInterval,
                                              Collection<Class<? extends IOException>> clazzes,
                                              Collection<Integer> codes)

#### DefaultHttpRequestRetryStrategy

    public DefaultHttpRequestRetryStrategy(int maxRetries,
                                           TimeValue defaultRetryInterval)

Create the HTTP request retry strategy using the following list of non-retriable I/O exception classes:

- InterruptedIOException
- UnknownHostException
- ConnectException
- ConnectionClosedException
- NoRouteToHostException
- SSLException

and retriable HTTP status codes:

- SC_TOO_MANY_REQUESTS (429)
- SC_SERVICE_UNAVAILABLE (503)

Parameters:
  `maxRetries` - how many times to retry; 0 means no retries
  `defaultRetryInterval` - the default retry interval between subsequent retries if the `Retry-After` header is not set or invalid.

#### DefaultHttpRequestRetryStrategy

    public DefaultHttpRequestRetryStrategy()

Create the HTTP request retry strategy with a max retry count of 1, default retry interval of 1 second, and using the following list of non-retriable I/O exception classes:

- InterruptedIOException
- UnknownHostException
- ConnectException
- ConnectionClosedException
- SSLException

and retriable HTTP status codes:

- SC_TOO_MANY_REQUESTS (429)
- SC_SERVICE_UNAVAILABLE (503)

### Method Detail

#### retryRequest

    public boolean retryRequest(HttpRequest request,
                                IOException exception,
                                int execCount,
                                HttpContext context)

Description copied from interface: `HttpRequestRetryStrategy`
Determines if a method should be retried after an I/O exception occurred during execution.

Specified by:
  `retryRequest` in interface `HttpRequestRetryStrategy`
Parameters:
  `request` - the request failed due to an I/O exception
  `exception` - the exception that occurred
  `execCount` - the number of times this method has been unsuccessfully executed
  `context` - the context for the request execution
Returns:
  `true` if the request should be retried, `false` otherwise

#### retryRequest

    public boolean retryRequest(HttpResponse response,
                                int execCount,
                                HttpContext context)

Description copied from interface: `HttpRequestRetryStrategy`
Determines if a method should be retried given the response from the target server.

Specified by:
  `retryRequest` in interface `HttpRequestRetryStrategy`
Parameters:
  `response` - the response from the target server
  `execCount` - the number of times this method has been unsuccessfully executed
  `context` - the context for the request execution
Returns:
  `true` if the request should be retried, `false` otherwise

#### getRetryInterval

    public TimeValue getRetryInterval(HttpResponse response,
                                      int execCount,
                                      HttpContext context)

Description copied from interface: `HttpRequestRetryStrategy`
Determines the retry interval between subsequent retries.

Specified by:
  `getRetryInterval` in interface `HttpRequestRetryStrategy`
Parameters:
  `response` - the response from the target server
  `execCount` - the number of times this method has been unsuccessfully executed
  `context` - the context for the request execution
Returns:
  the retry interval between subsequent retries

#### handleAsIdempotent

    protected boolean handleAsIdempotent(HttpRequest request)