GAO Rui created HDFS-10710: ------------------------------ Summary: In BlockManager#rescanPostponedMisreplicatedBlocks(), start and end block counts should be get with the protect with lock Key: HDFS-10710 URL: https://issues.apache.org/jira/browse/HDFS-10710 Project: Hadoop HDFS Issue Type: Bug Components: namenode Reporter: GAO Rui Assignee: GAO Rui
In BlockManager#rescanPostponedMisreplicatedBlocks(), start and end block counts should be get with the protect with lock. Or, log records like "-1 blocks are removed" which indicate minus blocks are removed could be generated. For example, following scenario: 1. thread1 run {{long startPostponedMisReplicatedBlocksCount = getPostponedMisreplicatedBlocksCount();}} currently startPostponedMisReplicatedBlocksCount get the value 20. 2. before thread1 run {{namesystem.writeLock();}} , thread2 increment postponedMisreplicatedBlocksCount by 1, so postponedMisreplicatedBlocksCount is 21 now. 3. thread1 end the iteration, but no postponed block is removed, so after run {{long endPostponedMisReplicatedBlocksCount = getPostponedMisreplicatedBlocksCount();}}, endPostponedMisReplicatedBlocksCount get the value of 21. 4. thread 1 generate the log: ``` LOG.info("Rescan of postponedMisreplicatedBlocks completed in " + (Time.monotonicNow() - startTimeRescanPostponedMisReplicatedBlocks) + " msecs. " + endPostponedMisReplicatedBlocksCount + " blocks are left. " + (startPostponedMisReplicatedBlocksCount - endPostponedMisReplicatedBlocksCount) + " blocks are removed."); ``` Then, we'll get the log record like "-1 blocks are removed." -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org