Kitti Nanasi created HDFS-13846:
-----------------------------------

             Summary: Safe blocks counter is not decremented correctly if the 
block is striped
                 Key: HDFS-13846
                 URL: https://issues.apache.org/jira/browse/HDFS-13846
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: hdfs
    Affects Versions: 3.1.0
            Reporter: Kitti Nanasi
            Assignee: Kitti Nanasi


In BlockManagerSafeMode class, the "safe blocks" counter is incremented if the 
number of nodes containing the block equals to the number of data units 
specified by the erasure coding policy, which looks like this in the code:
{code:java}
final int safe = storedBlock.isStriped() ?
        ((BlockInfoStriped)storedBlock).getRealDataBlockNum() : safeReplication;
    if (storageNum == safe) {
      this.blockSafe++;
{code}
But when it is decremented the code does not check if the block is striped or 
not, just compares the number of nodes containing the block with 0 
(safeReplication - 1) if the block is complete, which is not correct.
{code:java}
if (storedBlock.isComplete() &&
        blockManager.countNodes(b).liveReplicas() == safeReplication - 1) {
      this.blockSafe--;
      assert blockSafe >= 0;
      checkSafeMode();
    }
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to