Hello my dear HDFS dev colleagues, It appears that when a dfs client writes and hsync(), and if the primary replica (that is, the first DataNode in the write pipeline) is unresponsive to the hsync() request, the hsync() would wait at DataStreamer#waitForAckedSeqno().
In one scenario, we saw this behavior when the primary DataNode has a flaky disk drive controller, and DataNode was thus unable to write back ack to client because it was unable to write to the disk successfully. The client is a Flume agent and it finally bailed out after 180 seconds. My question is: why doesn't hsync() replace bad DataNodes in the pipeline just like the typical write pipeline failure recovery? I would like to understand if this is intended before I file a jira and post a patch. Thanks, Wei-Chiu -- A very happy Hadoop contributor