From b919c1c0444810a43295dfb966f22afe7c61d195 Mon Sep 17 00:00:00 2001 From: Akira Ajisaka Date: Fri, 24 Jul 2015 18:28:44 +0900 Subject: [PATCH] HDFS-8806. Inconsistent metrics: number of missing blocks with replication factor 1 not properly cleared. Contributed by Zhe Zhang. (cherry picked from commit 206d4933a567147b62f463c2daa3d063ad40822b) (cherry picked from commit b2a532f61c011dacbda1c9b173d1df126ff8809f) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 5 ++++- .../hdfs/server/blockmanagement/UnderReplicatedBlocks.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 8aab98adf80..7e58e51cdd7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -19,7 +19,10 @@ Release 2.7.2 - UNRELEASED HDFS-6945. BlockManager should remove a block from excessReplicateMap and decrement ExcessBlocks metric when the block is removed. (aajisaka) -Release 2.7.1 - 2015-07-06 + HDFS-8806. Inconsistent metrics: number of missing blocks with replication + factor 1 not properly cleared. (Zhe Zhang via aajisaka) + +Release 2.7.1 - 2015-07-06 INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/UnderReplicatedBlocks.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/UnderReplicatedBlocks.java index 0240805313d..1cc42da3493 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/UnderReplicatedBlocks.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/UnderReplicatedBlocks.java @@ -101,10 +101,11 @@ class UnderReplicatedBlocks implements Iterable { /** * Empty the queues. */ - void clear() { + synchronized void clear() { for (int i = 0; i < LEVEL; i++) { priorityQueues.get(i).clear(); } + corruptReplOneBlocks = 0; } /** Return the total number of under replication blocks */