diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index 6c349ffd5b..0d61cad2ee 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -3159,23 +3159,26 @@ public class BlockManager implements BlockStatsMXBean { + storedBlock.getGenerationStamp(), Reason.GENSTAMP_MISMATCH); } boolean wrongSize; + long blockMapSize; if (storedBlock.isStriped()) { assert BlockIdManager.isStripedBlockID(reported.getBlockId()); assert storedBlock.getBlockId() == BlockIdManager.convertToStripedID(reported.getBlockId()); BlockInfoStriped stripedBlock = (BlockInfoStriped) storedBlock; int reportedBlkIdx = BlockIdManager.getBlockIndex(reported); - wrongSize = reported.getNumBytes() != getInternalBlockLength( - stripedBlock.getNumBytes(), stripedBlock.getCellSize(), - stripedBlock.getDataBlockNum(), reportedBlkIdx); + blockMapSize = getInternalBlockLength(stripedBlock.getNumBytes(), + stripedBlock.getCellSize(), stripedBlock.getDataBlockNum(), + reportedBlkIdx); + wrongSize = reported.getNumBytes() != blockMapSize; } else { - wrongSize = storedBlock.getNumBytes() != reported.getNumBytes(); + blockMapSize = storedBlock.getNumBytes(); + wrongSize = blockMapSize != reported.getNumBytes(); } if (wrongSize) { return new BlockToMarkCorrupt(new Block(reported), storedBlock, "block is " + ucState + " and reported length " + reported.getNumBytes() + " does not match " + - "length in block map " + storedBlock.getNumBytes(), + "length in block map " + blockMapSize, Reason.SIZE_MISMATCH); } else { return null; // not corrupt