Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Not having retries in knox clients can cause service upgrade failures.
The apache http client has a default mechanism (StandardHttpRequestRetryHandler and DefaultServiceUnavailableRetryStrategy) to support retries.
- DefaultServiceUnavailableRetryStrategy only retries in case of a 503 - ServiceUnavailable.
- StandardHttpRequestRetryHandler retries when a non excluded exception occurs during the request.
The excluded exceptions are: InterruptedIOException, UnknownHostException, ConnectException, SSLException. In these cases no retry is going to happen.
The following HTTP methods are considered idempotent so they can be retried: GET, HEAD, PUT, DELETE, OPTIONS, TRACE.
Note that if an endpoint is implemented as a non-idempotent way (for example a PUT) then this might have unwanted side-effects.
Other methods such as POST are only retried if the request has not yet written out to the output stream when the error happened. Or if requestSentRetryEnabled is enabled.