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
    Modifier and Type | Field and Description
    --- | ---
    `static DefaultHttpRequestRetryStrategy` | `INSTANCE`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `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
    Modifier and Type | Method and Description
    --- | ---
    `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

  - ### 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)

Copyright © 1999–2021 The Apache Software Foundation. All rights reserved.