You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Lin Yiqun (JIRA)" <ji...@apache.org> on 2016/01/19 12:53:39 UTC

[jira] [Created] (HDFS-9662) Wrong checking penultimate block replicated in FSNamesystem

Lin Yiqun created HDFS-9662:
-------------------------------

             Summary: 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


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)