[
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)