Phil Zampino created KNOX-1439:
----------------------------------
Summary: HA Dispatch implementations should differentiate
IOExceptions
Key: KNOX-1439
URL: https://issues.apache.org/jira/browse/KNOX-1439
Project: Apache Knox
Issue Type: Improvement
Components: Server
Affects Versions: 1.1.0
Reporter: Phil Zampino
The HA Dispatch implementations catch IOException, and initiate failover logic
regardless of the type of error the exception represents. For instance, some
IOExceptions indicate interrupted data transfer while others represent
connection errors.
This distinction is especially important for PUT and POST requests, for which
InputStreamEntity is used for the content. InputStreamEntity is a
non-repeatable entity type, making the results of subsequent attempts
unreliable.
We should probably only failover / retry on connection-related IOException
types:
* java.net.SocketException
* java.net.UnknownHostException
And return an error response to the client for other IOException types. Maybe
it makes sense to consider the HTTP method to make this decision (e.g., retry
GET requests, but not PUT or POST).
The affected dispatch implementations includes at least:
* org.apache.knox.gateway.ha.dispatch.DefaultHaDispatch
* org.apache.knox.gateway.ha.dispatch.AtlasApiHaDispatch
* org.apache.knox.gateway.ha.dispatch.AtlasHaDispatch
* org.apache.knox.gateway.dispatch.NiFiHaDispatch
* org.apache.knox.gateway.hdfs.dispatch.AbstractHdfsHaDispatch
If retry is configured, but we won't retry, then perhaps
java.net.HttpRetryException should be thrown.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)