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
>

Reply via email to