From 17d22e6dc441f72cffa4413ec30921d6d4c41cfd Mon Sep 17 00:00:00 2001 From: Aaron Myers Date: Wed, 28 Mar 2012 22:59:52 +0000 Subject: [PATCH] HDFS-3158. LiveNodes member of NameNodeMXBean should list non-DFS used space and capacity per DN. Contributed by Aaron T. Myers. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1306635 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../apache/hadoop/hdfs/server/namenode/FSNamesystem.java | 2 ++ .../hadoop/hdfs/server/namenode/TestNameNodeMXBean.java | 9 +++++++++ 3 files changed, 14 insertions(+) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 7a2dea9583..48bb613e50 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -279,6 +279,9 @@ Release 2.0.0 - UNRELEASED HDFS-3155. Clean up FSDataset implemenation related code. (szetszwo) + HDFS-3158. LiveNodes member of NameNodeMXBean should list non-DFS used + space and capacity per DN. (atm) + OPTIMIZATIONS HDFS-3024. Improve performance of stringification in addStoredBlock (todd) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 9d647f2353..19a3c1891e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -5072,6 +5072,8 @@ public class FSNamesystem implements Namesystem, FSClusterStats, innerinfo.put("lastContact", getLastContact(node)); innerinfo.put("usedSpace", getDfsUsed(node)); innerinfo.put("adminState", node.getAdminState().toString()); + innerinfo.put("nonDfsUsedSpace", node.getNonDfsUsed()); + innerinfo.put("capacity", node.getCapacity()); info.put(node.getHostName(), innerinfo); } return JSON.toString(info); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java index 6647042145..97a81d3a77 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java @@ -93,6 +93,15 @@ public class TestNameNodeMXBean { // get attribute alivenodeinfo String alivenodeinfo = (String) (mbs.getAttribute(mxbeanName, "LiveNodes")); + Map> liveNodes = + (Map>) JSON.parse(alivenodeinfo); + assertTrue(liveNodes.size() > 0); + for (Map liveNode : liveNodes.values()) { + assertTrue(liveNode.containsKey("nonDfsUsedSpace")); + assertTrue(((Long)liveNode.get("nonDfsUsedSpace")) > 0); + assertTrue(liveNode.containsKey("capacity")); + assertTrue(((Long)liveNode.get("capacity")) > 0); + } Assert.assertEquals(fsn.getLiveNodes(), alivenodeinfo); // get attribute deadnodeinfo String deadnodeinfo = (String) (mbs.getAttribute(mxbeanName,