[
https://issues.apache.org/jira/browse/HDFS-9662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15108304#comment-15108304
]
Vinayakumar B commented on HDFS-9662:
-------------------------------------
Avoid calling {{checkFileProgress}} incase penultimate block not exist, is same
as returning {{true}} from {{checkFileProgress}}.
check for replication means, if the the block exist, then check for proper
replication. If the block itself doesnt exist, then there is no need to verify.
Just return true.
Instead of checking {{pendingFile.getPenultimateBlock() != null}} everytime
before calling {{checkFileProgress}}, isn't its better to ignore that inside
{{checkFileProgress}} itself. ?
> 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, HDFS-9662.002.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)