in src/main/java/com/google/gcs/sdrs/util/RetryHttpInitializerWrapper.java [90:118]
public void initialize(HttpRequest request) {
request.setReadTimeout(2 * MILLIS_PER_MINUTE); // 2 minutes read timeout
final HttpUnsuccessfulResponseHandler backoffHandler =
new HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff()).setSleeper(sleeper);
if (backOffRequiredRateLimit) {
((HttpBackOffUnsuccessfulResponseHandler) backoffHandler)
.setBackOffRequired(SdrsBackOffRequired.ON_SERVER_ERROR_RATE_LIMIT);
}
request.setInterceptor(wrappedCredential);
request.setUnsuccessfulResponseHandler(
(final HttpRequest unsuccessfulRequest,
final HttpResponse response,
final boolean supportsRetry) -> {
if (wrappedCredential.handleResponse(unsuccessfulRequest, response, supportsRetry)) {
// If credential decides it can handle it, the return code or message indicated
// something specific to authentication, and no backoff is desired.
return true;
} else if (backoffHandler.handleResponse(unsuccessfulRequest, response, supportsRetry)) {
// Otherwise, we defer to the judgement of our internal backoff handler.
logger.info("Retrying " + unsuccessfulRequest.getUrl().toString());
return true;
} else {
return false;
}
});
request.setIOExceptionHandler(
new HttpBackOffIOExceptionHandler(new ExponentialBackOff()).setSleeper(sleeper));
}