You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@knox.apache.org by "Attila Magyar (Jira)" <ji...@apache.org> on 2022/04/28 11:13:00 UTC

[jira] [Updated] (KNOX-2736) Knox clients should support retry/failover

     [ https://issues.apache.org/jira/browse/KNOX-2736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Attila Magyar updated KNOX-2736:
--------------------------------
    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.



> Knox clients should support retry/failover
> ------------------------------------------
>
>                 Key: KNOX-2736
>                 URL: https://issues.apache.org/jira/browse/KNOX-2736
>             Project: Apache Knox
>          Issue Type: Improvement
>          Components: KnoxShell
>            Reporter: Attila Magyar
>            Assignee: Attila Magyar
>            Priority: Major
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> 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.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)