cnauroth commented on code in PR #4248:
URL: https://github.com/apache/hadoop/pull/4248#discussion_r904363794


##########
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.java:
##########
@@ -570,8 +570,14 @@ public void setStatus(String status) {
    */
   @SuppressWarnings("unchecked")
   public void close() throws IOException, InterruptedException {
-    for (RecordWriter writer : recordWriters.values()) {
-      writer.close(context);
-    }
+    recordWriters.values().parallelStream().forEach(writer -> {

Review Comment:
   I'm concerned that this could have unintended side effects for callers, 
because it changes the error contract. Errors during `close()` that were 
formerly visible as a checked `IOException` or `InterruptedException` now 
become an unchecked `RuntimeException`. In the case of thread interruption, the 
interrupt now occurs on the background thread with no propagation of 
interrupted status back up to the coordinating thread.
   
   Unfortunately, `parallelStream()` with a lambda puts us down this path. It 
would be more code, but directly managing a `ThreadPoolExecutor` would give you 
the chance to preserve the contract by unwrapping checked exceptions from the 
`Future` and propagating.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to