[
https://issues.apache.org/jira/browse/HDFS-17979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18113073#comment-18113073
]
ASF GitHub Bot commented on HDFS-17979:
---------------------------------------
iamsanjaymalakar opened a new pull request, #8732:
URL: https://github.com/apache/hadoop/pull/8732
### Problem
The OfflineEditsViewer
`org.apache.hadoop.hdfs.tools.offlineEditsViewer.TeeOutputStream.close()`
closes its wrapped output streams in a for-each loop. If one
`java.io.OutputStream.close()` call throws `java.io.IOException`, the loop
exits and every later output is left open.
### Change
* `close()` attempts every wrapped output.
* It keeps the first `java.io.IOException`.
* Later close failures are attached as suppressed exceptions.
* The first exception is thrown after every output has been attempted.
* `write()` and `flush()` are untouched.
### Testing
* `mvn -pl hadoop-hdfs-project/hadoop-hdfs -am -Dtest=TestTeeOutputStream
test`
* New test `TestTeeOutputStream#testCloseAttemptsEveryOutput`: two of three
wrapped streams throw on `close()`; the test asserts every stream is closed,
the first exception is rethrown, and the second is suppressed. Fails against
the previous code.
> TeeOutputStream.close() should close every wrapped output
> ---------------------------------------------------------
>
> Key: HDFS-17979
> URL: https://issues.apache.org/jira/browse/HDFS-17979
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: tools
> Affects Versions: 3.4.1
> Reporter: Sanjay Malakar
> Priority: Minor
>
> The OfflineEditsViewer
> \{{org.apache.hadoop.hdfs.tools.offlineEditsViewer.TeeOutputStream.close()}}
> closes its wrapped output streams in a for-each loop. If one
> \{{java.io.OutputStream.close()}} call throws \{{java.io.IOException}}, the
> loop exits and every later output is left open.
> {\{close()}} should attempt every output, keep the first
> \{{java.io.IOException}}, attach later failures as suppressed exceptions, and
> throw the first one after every output has been attempted. This mirrors the
> fix in ZOOKEEPER-5055 for \{{FileTxnLog.close()}}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]