ZanderXu created HDFS-16622:
-------------------------------

             Summary: addRDBI in IncrementalBlockReportManager may remove the 
block with bigger GS.
                 Key: HDFS-16622
                 URL: https://issues.apache.org/jira/browse/HDFS-16622
             Project: Hadoop HDFS
          Issue Type: Bug
            Reporter: ZanderXu
            Assignee: ZanderXu


In our production environment,  there is a strange missing block, according to 
the log, I suspect there is a bug in function addRDBI(ReceivedDeletedBlockInfo 
rdbi,DatanodeStorage storage)(line 250).

Bug code in the for loop:
{code:java}
synchronized void addRDBI(ReceivedDeletedBlockInfo rdbi,
      DatanodeStorage storage) {
    // Make sure another entry for the same block is first removed.
    // There may only be one such entry.
    for (PerStorageIBR perStorage : pendingIBRs.values()) {
      if (perStorage.remove(rdbi.getBlock()) != null) {
        break;
      }
    }
    getPerStorageIBR(storage).put(rdbi);
  }
{code}

Removed the GS of the Block in ReceivedDeletedBlockInfo may be greater than the 
GS of the Block in rdbi. And NN will invalidate the Replicate will small GS 
when complete one block. 
So If there is only one replicate for one block, there is a possibility of 
missingblock because of this wrong logic. 




--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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

Reply via email to