SteNicholas commented on code in PR #3879:
URL: https://github.com/apache/celeborn/pull/3879#discussion_r4324814006


##########
worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/TierWriter.scala:
##########
@@ -691,39 +699,36 @@ class DfsTierWriter(
     }
   }
 
+  // A copy whose data stream or index failed to close is unreadable, so it 
must not count as
+  // committed. S3/OSS upload completion failures are unchecked and already 
fail the commit.
+  override protected def failCommitOnCloseStreamsError: Boolean = true

Review Comment:
   @ewoodbury, propagate HDFS append-close failures before releasing replicas. 
With `celeborn.worker.reuse.hdfs.outputStream.enabled=false` (the default), 
`hdfsStream` is already null here. Data streams are closed inside 
`DfsFlushTask.flush`, which still catches and logs `IOException` without 
notifying the writer, so this new flag does not cover the default HDFS write 
path.
   
   I reproduced this on `f4048b1` by injecting an append-stream close failure 
with the data left unpersisted: `close()` returned `1024`, `committed=true`, 
the data file contained `0` bytes, and `.success` existed. If this happens to 
the primary while its replica commits successfully, the new driver-side 
selection can unpublish and delete the healthy replica, leaving the unreadable 
primary.
   
   Please propagate per-flush stream-close failures through the flush notifier, 
preserving any earlier write failure, and add a regression test with stream 
reuse disabled.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to