public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { int statusCode = response.getStatusCode(); boolean retryRequest = false; if (statusCode >= 300 && statusCode < 400) { retryRequest = redirectionRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 400 && statusCode < 500) { retryRequest = clientErrorRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 500) { retryRequest = serverErrorRetryHandler.shouldRetryRequest(command, response); } return retryRequest; }
public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { int statusCode = response.getStatusCode(); boolean retryRequest = false; if (statusCode >= 300 && statusCode < 400) { retryRequest = redirectionRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 400 && statusCode < 500) { retryRequest = clientErrorRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 500) { retryRequest = serverErrorRetryHandler.shouldRetryRequest(command, response); } return retryRequest; }
public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { int statusCode = response.getStatusCode(); boolean retryRequest = false; if (statusCode >= 300 && statusCode < 400) { retryRequest = redirectionRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 400 && statusCode < 500) { retryRequest = clientErrorRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 500) { retryRequest = serverErrorRetryHandler.shouldRetryRequest(command, response); } return retryRequest; }
public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { int statusCode = response.getStatusCode(); boolean retryRequest = false; if (statusCode >= 300 && statusCode < 400) { retryRequest = redirectionRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 400 && statusCode < 500) { retryRequest = clientErrorRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 500) { retryRequest = serverErrorRetryHandler.shouldRetryRequest(command, response); } return retryRequest; }
public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { int statusCode = response.getStatusCode(); boolean retryRequest = false; if (statusCode >= 300 && statusCode < 400) { retryRequest = redirectionRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 400 && statusCode < 500) { retryRequest = clientErrorRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 500) { retryRequest = serverErrorRetryHandler.shouldRetryRequest(command, response); } return retryRequest; }
public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { int statusCode = response.getStatusCode(); boolean retryRequest = false; if (statusCode >= 300 && statusCode < 400) { retryRequest = redirectionRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 400 && statusCode < 500) { retryRequest = clientErrorRetryHandler.shouldRetryRequest(command, response); } else if (statusCode >= 500) { retryRequest = serverErrorRetryHandler.shouldRetryRequest(command, response); } return retryRequest; }
@Override public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { if (command.getFailureCount() > retryCountLimit) return false; if (response.getStatusCode() == 500) { byte[] content = HttpUtils.closeClientButKeepContentStream(response); if (content != null) { String message = new String(content); if (message.contains("<responseStatus>ILLEGAL_STATE</responseStatus>") && message.contains("RECONFIG_ING")) { return backoffHandler.shouldRetryRequest(command, response); } if (message.contains("<responseStatus>VALIDATION_ERROR</responseStatus>") && message.contains("verify error")) { return backoffHandler.shouldRetryRequest(command, response); } } } return false; } }
@Override public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { if (command.getFailureCount() > retryCountLimit) return false; if (response.getStatusCode() == 500) { byte[] content = HttpUtils.closeClientButKeepContentStream(response); if (content != null) { String message = new String(content); if (message.contains("<responseStatus>ILLEGAL_STATE</responseStatus>") && message.contains("RECONFIG_ING")) { return backoffHandler.shouldRetryRequest(command, response); } if (message.contains("<responseStatus>VALIDATION_ERROR</responseStatus>") && message.contains("verify error")) { return backoffHandler.shouldRetryRequest(command, response); } } } return false; } }
@Test public void testDoesNotRetryWhenNot429() { HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build()); HttpResponse response = HttpResponse.builder().statusCode(400).build(); assertFalse(handler.shouldRetryRequest(command, response)); }
@Test public void testDoesNotRetryWhenCannotParseError() { HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build()); HttpResponse response = HttpResponse.builder().statusCode(429).payload("foo").build(); assertFalse(handler.shouldRetryRequest(command, response)); }
@Test public void testDoesNotRetryWhenErrorNotRetryable() { String nonRetryable = "{\"error\":{\"code\":\"ReferencedResourceNotProvisioned\",\"message\":\"Not provisioned\"}}"; HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build()); HttpResponse response = HttpResponse.builder().statusCode(429).payload(nonRetryable).build(); assertFalse(handler.shouldRetryRequest(command, response)); }
@Test public void testRetriesWhenRetryableError() { String retryable = "{\"error\":{\"code\":\"RetryableError\",\"message\":\"Resource busy\"}}"; HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build()); HttpResponse response = HttpResponse.builder().statusCode(429).payload(retryable).build(); assertTrue(handler.shouldRetryRequest(command, response)); } }
@Test public void testDoesNotRetryWhenRateLimitError() { HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build()); HttpResponse response = HttpResponse.builder().statusCode(429).addHeader(HttpHeaders.RETRY_AFTER, "15").build(); assertFalse(handler.shouldRetryRequest(command, response)); }