[
https://issues.apache.org/jira/browse/HDFS-9662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15106685#comment-15106685
]
Kai Zheng commented on HDFS-9662:
---------------------------------
{{getPenultimateBlock}} returning null means the file has no blocks or just one
block, which is normal. I think the original code is correct.
> Wrong checking penultimate block replicated in FSNamesystem
> -----------------------------------------------------------
>
> Key: HDFS-9662
> URL: https://issues.apache.org/jira/browse/HDFS-9662
> Project: Hadoop HDFS
> Issue Type: Bug
> Affects Versions: 2.7.1
> Reporter: Lin Yiqun
> Assignee: Lin Yiqun
> Attachments: HDFS-9662.001.patch
>
>
> There is a bug in checking penultimate block replicated in FSNamesystem.
> {code}
> /**
> * Check that the indicated file's blocks are present and
> * replicated. If not, return false. If checkall is true, then check
> * all blocks, otherwise check only penultimate block.
> */
> boolean checkFileProgress(String src, INodeFile v, boolean checkall) {
> assert hasReadLock();
> if (checkall) {
> return blockManager.checkBlocksProperlyReplicated(src, v
> .getBlocks());
> } else {
> // check the penultimate block of this file
> BlockInfo b = v.getPenultimateBlock();
> return b == null ||
> blockManager.checkBlocksProperlyReplicated(
> src, new BlockInfo[] { b });
> }
> }
> {code}
> When the param checkall is true, the checking operations is true.But if
> checkall is false, it will check the penultimate block of this file. And if
> the BlockInfo b is null, it will return true by this code, but actually it
> should be return false because the penultimate block is not replicated and
> has no blockInfo.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)