[
https://issues.apache.org/jira/browse/HDFS-9662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15106770#comment-15106770
]
Lin Yiqun commented on HDFS-9662:
---------------------------------
It's true that {{getPenultimateBlock}} will return null when the file has no
blocks or other scenarios. But the one purpose of this method is to check the
penultimate block is replicated or not. If the file has no blocks or juse one
block, it still indicated that the penultimate block is not replicated because
it not exist. It's better for that we should do a judgement that whether the
penultimateBlock was existed or not when the checkFileProgress was invoked
instead of directing return true even the blockInfo is null in this method. It
will be misunderstanding for users.
> 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)