[ 
https://issues.apache.org/jira/browse/HDFS-8798?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Walter Su updated HDFS-8798:
----------------------------
    Attachment: HDFS-8798.01.patch

Uploaded 01 patch. The patch does 2 things:

1. rename {{refreshLocatedBlock}} to {{getBlockFromCache}}.  First, 
{{refreshLocatedBlock}} is the same as {{getBlockAt}}, I don't understand why 
add it in the first place. On the other hand, The name "refresh.." is very 
confusing. {{fetchBlockAt}} will re-fetch block from NN, but {{getBlockAt}} 
just get it from cache.

2. The retry logic are a combination of DFSInputStream#blockSeekTo and 
DFSInputStream#chooseDataNode.
The logic are a bit different:
a. If failure times exceeds threshold, DFSInputStream will throw 
BlockMissingException and fail. But DFSStripedInputStream can continue reading.
b. DFSInputStream adds node to deadNodes once failed, because contiguous block 
has 3 replica by default.
   DFSStripedInputStream adds node to deadNodes only if failure times exceeds 
threshold.
c. another reason I don't use {{chooseDataNode}} is that internal block has 
only 1 replica. There's no "best" so no need to "choose".


> Erasure Coding: fix the retry logic of DFSStripedInputStream
> ------------------------------------------------------------
>
>                 Key: HDFS-8798
>                 URL: https://issues.apache.org/jira/browse/HDFS-8798
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>            Reporter: Walter Su
>            Assignee: Walter Su
>




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

Reply via email to