hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vino...@apache.org
Subject hadoop git commit: HDFS-7182. JMX metrics aren't accessible when NN is busy. Contributed by Ming Ma.
Date Mon, 31 Aug 2015 04:32:00 GMT
Repository: hadoop
Updated Branches:
  refs/heads/branch-2.6.1 e6b52fc3e -> c8ce11d06


HDFS-7182. JMX metrics aren't accessible when NN is busy. Contributed by Ming Ma.

(cherry picked from commit 4b589e7cfa27bd042e228bbbcf1c3b75b2aeaa57)

Conflicts:
	hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java

(cherry picked from commit 96f0813c5d6140aabe7b2837f30971936276e689)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c8ce11d0
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c8ce11d0
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c8ce11d0

Branch: refs/heads/branch-2.6.1
Commit: c8ce11d067d7a95ae7af85e4d05bce9e44a1ff17
Parents: e6b52fc
Author: Jing Zhao <jing9@apache.org>
Authored: Fri Jan 9 17:35:57 2015 -0800
Committer: Vinod Kumar Vavilapalli <vinodkv@apache.org>
Committed: Sun Aug 30 21:21:05 2015 -0700

----------------------------------------------------------------------
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt     |  2 +
 .../hdfs/server/namenode/FSNamesystem.java      | 15 ++---
 .../server/namenode/TestFSNamesystemMBean.java  | 69 +++++---------------
 3 files changed, 25 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/c8ce11d0/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 470d78e..05175c0 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -17,6 +17,8 @@ Release 2.6.1 - UNRELEASED
     HDFS-7579. Improve log reporting during block report rpc failure.
     (Charles Lamb via cnauroth)
 
+    HDFS-7182. JMX metrics aren't accessible when NN is busy. (Ming Ma via jing9)
+
   OPTIMIZATIONS
 
   BUG FIXES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/c8ce11d0/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
----------------------------------------------------------------------
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 9e38195..7077b68 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
@@ -421,7 +421,7 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
 
   private String nameserviceId;
 
-  private RollingUpgradeInfo rollingUpgradeInfo = null;
+  private volatile RollingUpgradeInfo rollingUpgradeInfo = null;
   /**
    * A flag that indicates whether the checkpointer should checkpoint a rollback
    * fsimage. The edit log tailer sets this flag. The checkpoint will create a
@@ -8355,16 +8355,11 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
 
   @Override  // NameNodeMXBean
   public RollingUpgradeInfo.Bean getRollingUpgradeStatus() {
-    readLock();
-    try {
-      RollingUpgradeInfo upgradeInfo = getRollingUpgradeInfo();
-      if (upgradeInfo != null) {
-        return new RollingUpgradeInfo.Bean(upgradeInfo);
-      }
-      return null;
-    } finally {
-      readUnlock();
+    RollingUpgradeInfo upgradeInfo = getRollingUpgradeInfo();
+    if (upgradeInfo != null) {
+      return new RollingUpgradeInfo.Bean(upgradeInfo);
     }
+    return null;
   }
 
   /** Is rolling upgrade in progress? */

http://git-wip-us.apache.org/repos/asf/hadoop/blob/c8ce11d0/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java
index 39e1165..c044fb0 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java
@@ -17,11 +17,16 @@
  */
 package org.apache.hadoop.hdfs.server.namenode;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
 
 import java.lang.management.ManagementFactory;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
@@ -51,66 +56,28 @@ public class TestFSNamesystemMBean {
         // come from hadoop metrics framework for the class FSNamesystem.
         ObjectName mxbeanNamefsn = new ObjectName(
             "Hadoop:service=NameNode,name=FSNamesystem");
-        Integer blockCapacity = (Integer) (mbs.getAttribute(mxbeanNamefsn,
-            "BlockCapacity"));
 
         // Metrics that belong to "FSNamesystemState".
         // These are metrics that FSNamesystem registers directly with MBeanServer.
         ObjectName mxbeanNameFsns = new ObjectName(
             "Hadoop:service=NameNode,name=FSNamesystemState");
-        String FSState = (String) (mbs.getAttribute(mxbeanNameFsns,
-            "FSState"));
-        Long blocksTotal = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "BlocksTotal"));
-        Long capacityTotal = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "CapacityTotal"));
-        Long capacityRemaining = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "CapacityRemaining"));
-        Long capacityUsed = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "CapacityUsed"));
-        Long filesTotal = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "FilesTotal"));
-        Long pendingReplicationBlocks = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "PendingReplicationBlocks"));
-        Long underReplicatedBlocks = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "UnderReplicatedBlocks"));
-        Long scheduledReplicationBlocks = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "ScheduledReplicationBlocks"));
-        Integer totalLoad = (Integer) (mbs.getAttribute(mxbeanNameFsns,
-            "TotalLoad"));
-        Integer numLiveDataNodes = (Integer) (mbs.getAttribute(mxbeanNameFsns,
-            "NumLiveDataNodes"));
-        Integer numDeadDataNodes = (Integer) (mbs.getAttribute(mxbeanNameFsns,
-           "NumDeadDataNodes"));
-        Integer numStaleDataNodes = (Integer) (mbs.getAttribute(mxbeanNameFsns,
-            "NumStaleDataNodes"));
-        Integer numDecomLiveDataNodes = (Integer) (mbs.getAttribute(mxbeanNameFsns,
-            "NumDecomLiveDataNodes"));
-        Integer numDecomDeadDataNodes = (Integer) (mbs.getAttribute(mxbeanNameFsns,
-            "NumDecomDeadDataNodes"));
-        Integer numDecommissioningDataNodes = (Integer) (mbs.getAttribute(mxbeanNameFsns,
-            "NumDecommissioningDataNodes"));
-        String snapshotStats = (String) (mbs.getAttribute(mxbeanNameFsns,
-            "SnapshotStats"));
-        Long MaxObjects = (Long) (mbs.getAttribute(mxbeanNameFsns,
-            "MaxObjects"));
-        Integer numStaleStorages = (Integer) (mbs.getAttribute(
-            mxbeanNameFsns, "NumStaleStorages"));
 
         // Metrics that belong to "NameNodeInfo".
         // These are metrics that FSNamesystem registers directly with MBeanServer.
         ObjectName mxbeanNameNni = new ObjectName(
             "Hadoop:service=NameNode,name=NameNodeInfo");
-        String safemode = (String) (mbs.getAttribute(mxbeanNameNni,
-            "Safemode"));
-        String liveNodes = (String) (mbs.getAttribute(mxbeanNameNni,
-            "LiveNodes"));
-        String deadNodes = (String) (mbs.getAttribute(mxbeanNameNni,
-            "DeadNodes"));
-        String decomNodes = (String) (mbs.getAttribute(mxbeanNameNni,
-            "DecomNodes"));
-        String corruptFiles = (String) (mbs.getAttribute(mxbeanNameNni,
-            "CorruptFiles"));
+
+        final Set<ObjectName> mbeans = new HashSet<ObjectName>();
+        mbeans.add(mxbeanNamefsn);
+        mbeans.add(mxbeanNameFsns);
+        mbeans.add(mxbeanNameNni);
+
+        for(ObjectName mbean : mbeans) {
+          MBeanInfo attributes = mbs.getMBeanInfo(mbean);
+          for (MBeanAttributeInfo attributeInfo : attributes.getAttributes()) {
+            mbs.getAttribute(mbean, attributeInfo.getName());
+          }
+        }
 
         succeeded = true;
       } catch (Exception e) {


Mime
View raw message