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