[ 
https://issues.apache.org/jira/browse/HDFS-8383?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14737818#comment-14737818
 ] 

Zhe Zhang commented on HDFS-8383:
---------------------------------

While we explore the ideas of refactoring {{DFSOutputStream}} and 
{{BlockGroupDataStreamer}}, here are some thoughts:
# A simplified version of a streamer's {{run()}} loop (w.r.t error handling):
{code}
while (true) {
    findError;      // F
    bumpStamp;      // B
    updatePipeline; // U
}
{code}
# I think the mission here is to handle all combinations of interleaved 
{{F-B-U}} sequences from multiple streamers. For example:
{code}
F1-B1-F3-U1-B3-U3
F1-F3-B3-U3-B1-U1
{code}
# Regardless of the final solution I think we should write a test to emulate 
the above interleaved combinations.
# This has been discussed above and in HDFS-8704: since we are never replacing 
a DN, do we still need {{B}} and {{U}}? IIUC we still need them to identify 
stale internal blocks (DN fails and comes back). But we can probably combine 
them into a single RPC call. After getting a new {{genStamp}} we can probably 
just set it on the block in NN?
# If we move {{B}} and {{U}} up (to {{OutputStream}} or {{BGDataStreamer}}), 
the logic is much simpler. We just need to make sure to correctly handle the 
arrival or new {{F}} messages while the upper level processes {{B+U}}. E.g., 
does it make sense the bump stamp multiple times.

> Tolerate multiple failures in DFSStripedOutputStream
> ----------------------------------------------------
>
>                 Key: HDFS-8383
>                 URL: https://issues.apache.org/jira/browse/HDFS-8383
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>            Reporter: Tsz Wo Nicholas Sze
>            Assignee: Walter Su
>         Attachments: HDFS-8383.00.patch, HDFS-8383.01.patch
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to