Class HttpBackOffIOExceptionHandler

java.lang.Object
com.google.api.client.http.HttpBackOffIOExceptionHandler
All Implemented Interfaces:
HttpIOExceptionHandler

@Beta public class HttpBackOffIOExceptionHandler extends Object implements HttpIOExceptionHandler
Beta
HttpIOExceptionHandler implementation with BackOff.

It is designed to work with only one HttpRequest at a time. As a result you MUST create a new instance of HttpBackOffIOExceptionHandler with a new instance of BackOff for each instance of HttpRequest.

Sample usage:

  request.setIOExceptionHandler(new HttpBackOffIOExceptionHandler(new ExponentialBackOff());
 

Note: Implementation doesn't call BackOff.reset() at all, since it expects a new BackOff instance.

Implementation is not thread-safe

Since:
1.15
  • Field Details

    • backOff

      private final BackOff backOff
      Back-off policy.
    • sleeper

      private Sleeper sleeper
      Sleeper.
  • Constructor Details

    • HttpBackOffIOExceptionHandler

      public HttpBackOffIOExceptionHandler(BackOff backOff)
      Constructs a new instance from a BackOff.
      Parameters:
      backOff - back-off policy
  • Method Details

    • getBackOff

      public final BackOff getBackOff()
      Returns the back-off.
    • getSleeper

      public final Sleeper getSleeper()
      Returns the sleeper.
    • setSleeper

      public HttpBackOffIOExceptionHandler setSleeper(Sleeper sleeper)
      Sets the sleeper.

      The default value is Sleeper.DEFAULT.

      Overriding is only supported for the purpose of calling the super implementation and changing the return type, but nothing else.

    • handleIOException

      public boolean handleIOException(HttpRequest request, boolean supportsRetry) throws IOException
      Invoked when an IOException is thrown during an HTTP request.

      There is a simple rule that one must follow: If you modify the request object or modify its execute interceptors in a way that should resolve the error, you must return true to issue a retry.

      Handles the request with BackOff. That means that if back-off is required a call to Sleeper.sleep(long) will be made.

      Specified by:
      handleIOException in interface HttpIOExceptionHandler
      Parameters:
      request - request object that can be read from for context or modified before retry
      supportsRetry - whether there will actually be a retry if this handler return true . Some handlers may want to have an effect only when there will actually be a retry after they handle their event (e.g. a handler that implements backoff policy).
      Returns:
      whether or not this handler has made a change that will require the request to be re-sent.
      Throws:
      IOException