You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by sj...@apache.org on 2015/08/14 09:17:56 UTC
[10/43] hadoop git commit: HDFS-7182. JMX metrics aren't accessible
when NN is busy. Contributed by Ming Ma.
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
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/96f0813c
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/96f0813c
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/96f0813c
Branch: refs/heads/sjlee/hdfs-merge
Commit: 96f0813c5d6140aabe7b2837f30971936276e689
Parents: 084674a
Author: Jing Zhao <ji...@apache.org>
Authored: Fri Jan 9 17:35:57 2015 -0800
Committer: Sangjin Lee <sj...@apache.org>
Committed: Wed Aug 12 22:19:28 2015 -0700
----------------------------------------------------------------------
.../hdfs/server/namenode/FSNamesystem.java | 15 ++---
.../server/namenode/TestFSNamesystemMBean.java | 69 +++++---------------
2 files changed, 23 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/96f0813c/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/96f0813c/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) {