Thanks for finding the issue Wei-Chiu. I agree hsync should be handling DN failure similarly as write-pipeline recovery, as you stated. If it's not doing that, it should be fixed.
--Yongjun On Mon, Sep 11, 2017 at 10:53 AM, Wei-Chiu Chuang <weic...@apache.org> wrote: > 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 >