HADOOP-16767 Handle non-IO exceptions in reopen()
Contributed by Sergei Poganshev. Catches Exception instead of IOException in closeStream() and so handle exceptions such as SdkClientException by aborting the wrapped stream. This will increase resilience to failures, as any which occuring during stream closure will be caught. Furthermore, because the underlying HTTP connection is aborted, rather than closed, it will not be recycled to cause problems on subsequent operations.
This commit is contained in:
parent
e9eecedf69
commit
e553eda9cd
@ -576,7 +576,7 @@ private void closeStream(String reason, long length, boolean forceAbort) {
|
|||||||
// and an abort is triggered, the initial attempt's statistics
|
// and an abort is triggered, the initial attempt's statistics
|
||||||
// aren't collected.
|
// aren't collected.
|
||||||
streamStatistics.streamClose(false, drained);
|
streamStatistics.streamClose(false, drained);
|
||||||
} catch (IOException e) {
|
} catch (Exception e) {
|
||||||
// exception escalates to an abort
|
// exception escalates to an abort
|
||||||
LOG.debug("When closing {} stream for {}", uri, reason, e);
|
LOG.debug("When closing {} stream for {}", uri, reason, e);
|
||||||
shouldAbort = true;
|
shouldAbort = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user