Repository: hadoop Updated Branches: refs/heads/branch-2 5bc3aae6f -> 7f39cab35
HDFS-7497. Inconsistent report of decommissioning DataNodes between dfsadmin and NameNode webui. Contributed by Yongjun Zhang. (cherry picked from commit b437f5eef40874287d4fbf9d8e43f1a857b5621f) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7f39cab3 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7f39cab3 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7f39cab3 Branch: refs/heads/branch-2 Commit: 7f39cab356cf23b268da99e5274b18f332aa74ba Parents: 5bc3aae Author: Andrew Wang <[email protected]> Authored: Thu Dec 11 18:12:47 2014 -0800 Committer: Andrew Wang <[email protected]> Committed: Thu Dec 11 18:13:14 2014 -0800 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hdfs/server/blockmanagement/DatanodeManager.java | 12 ++---------- .../hdfs/server/namenode/TestDecommissioningStatus.java | 7 ++++++- 3 files changed, 11 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/7f39cab3/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 64e9f64..44946ee 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -319,6 +319,9 @@ Release 2.7.0 - UNRELEASED HDFS-7515. Fix new findbugs warnings in hadoop-hdfs. (wheat9) + HDFS-7497. Inconsistent report of decommissioning DataNodes between + dfsadmin and NameNode webui. (Yongjun Zhang via wang) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/7f39cab3/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java index 5eec958..6438466 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java @@ -1111,16 +1111,8 @@ public class DatanodeManager { public List<DatanodeDescriptor> getDecommissioningNodes() { // There is no need to take namesystem reader lock as // getDatanodeListForReport will synchronize on datanodeMap - final List<DatanodeDescriptor> decommissioningNodes - = new ArrayList<DatanodeDescriptor>(); - final List<DatanodeDescriptor> results = getDatanodeListForReport( - DatanodeReportType.LIVE); - for(DatanodeDescriptor node : results) { - if (node.isDecommissionInProgress()) { - decommissioningNodes.add(node); - } - } - return decommissioningNodes; + // A decommissioning DN may be "alive" or "dead". + return getDatanodeListForReport(DatanodeReportType.DECOMMISSIONING); } /* Getter and Setter for stale DataNodes related attributes */ http://git-wip-us.apache.org/repos/asf/hadoop/blob/7f39cab3/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestDecommissioningStatus.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestDecommissioningStatus.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestDecommissioningStatus.java index a2b7b87..b7ba38c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestDecommissioningStatus.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestDecommissioningStatus.java @@ -252,10 +252,10 @@ public class TestDecommissioningStatus { System.setOut(oldOut); } } + /** * Tests Decommissioning Status in DFS. */ - @Test public void testDecommissionStatus() throws IOException, InterruptedException { InetSocketAddress addr = new InetSocketAddress("localhost", cluster @@ -363,6 +363,11 @@ public class TestDecommissioningStatus { assertTrue("the node should be DECOMMISSION_IN_PROGRESSS", dead.get(0).isDecommissionInProgress()); + // Check DatanodeManager#getDecommissionNodes, make sure it returns + // the node as decommissioning, even if it's dead + List<DatanodeDescriptor> decomlist = dm.getDecommissioningNodes(); + assertTrue("The node should be be decommissioning", decomlist.size() == 1); + // Delete the under-replicated file, which should let the // DECOMMISSION_IN_PROGRESS node become DECOMMISSIONED cleanupFile(fileSys, f);
