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

Lin Yiqun updated HDFS-9662:
----------------------------
    Attachment: HDFS-9662.002.patch

I update the patch. I do a judgement when invoking the method like this:
{code}
// Check if the penultimate block is minimally replicated
    if (pendingFile.getPenultimateBlock() != null
        && !fsn.checkFileProgress(src, pendingFile, false)) {
      throw new NotReplicatedYetException("Not replicated yet: " + src);
    }
{code}
And remove the {{b == null}} in {{checkFileProgress}}.

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

Reply via email to