Author: jeagles Date: Tue Nov 19 22:44:13 2013 New Revision: 1543612 URL: http://svn.apache.org/r1543612 Log: HDFS-1386. TestJMXGet fails in jdk7 (jeagles)
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestJMXGet.java Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1543612&r1=1543611&r2=1543612&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Nov 19 22:44:13 2013 @@ -506,6 +506,8 @@ Release 2.3.0 - UNRELEASED HDFS-5073. TestListCorruptFileBlocks fails intermittently. (Arpit Agarwal) + HDFS-1386. TestJMXGet fails in jdk7 (jeagles) + OPTIMIZATIONS HDFS-5239. Allow FSNamesystem lock fairness to be configurable (daryn) Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java?rev=1543612&r1=1543611&r2=1543612&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java Tue Nov 19 22:44:13 2013 @@ -24,6 +24,8 @@ import java.net.InetSocketAddress; import java.util.HashMap; import java.util.Map; +import javax.management.ObjectName; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -61,6 +63,7 @@ public class JournalNode implements Tool private JournalNodeRpcServer rpcServer; private JournalNodeHttpServer httpServer; private Map<String, Journal> journalsById = Maps.newHashMap(); + private ObjectName journalNodeInfoBeanName; private File localDir; @@ -181,6 +184,11 @@ public class JournalNode implements Tool for (Journal j : journalsById.values()) { IOUtils.cleanup(LOG, j); } + + if (journalNodeInfoBeanName != null) { + MBeans.unregister(journalNodeInfoBeanName); + journalNodeInfoBeanName = null; + } } /** @@ -256,7 +264,7 @@ public class JournalNode implements Tool * Register JournalNodeMXBean */ private void registerJNMXBean() { - MBeans.register("JournalNode", "JournalNodeInfo", this); + journalNodeInfoBeanName = MBeans.register("JournalNode", "JournalNodeInfo", this); } private class ErrorReporter implements StorageErrorReporter { Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=1543612&r1=1543611&r2=1543612&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java Tue Nov 19 22:44:13 2013 @@ -96,6 +96,8 @@ import java.security.PrivilegedException import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import javax.management.ObjectName; + import static org.apache.hadoop.hdfs.DFSConfigKeys.*; import static org.apache.hadoop.util.ExitUtil.terminate; @@ -210,6 +212,7 @@ public class DataNode extends Configured private boolean connectToDnViaHostname; ReadaheadPool readaheadPool; private final boolean getHdfsBlockLocationsEnabled; + private ObjectName dataNodeInfoBeanName; /** * Create the DataNode given a configuration and an array of dataDirs. @@ -879,7 +882,7 @@ public class DataNode extends Configured } private void registerMXBean() { - MBeans.register("DataNode", "DataNodeInfo", this); + dataNodeInfoBeanName = MBeans.register("DataNode", "DataNodeInfo", this); } @VisibleForTesting @@ -1236,6 +1239,10 @@ public class DataNode extends Configured if (metrics != null) { metrics.shutdown(); } + if (dataNodeInfoBeanName != null) { + MBeans.unregister(dataNodeInfoBeanName); + dataNodeInfoBeanName = null; + } } Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1543612&r1=1543611&r2=1543612&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Tue Nov 19 22:44:13 2013 @@ -5517,6 +5517,7 @@ public class FSNamesystem implements Nam } private ObjectName mbeanName; + private ObjectName mxbeanName; /** * Register the FSNamesystem MBean using the name @@ -5540,6 +5541,11 @@ public class FSNamesystem implements Nam void shutdown() { if (mbeanName != null) { MBeans.unregister(mbeanName); + mbeanName = null; + } + if (mxbeanName != null) { + MBeans.unregister(mxbeanName); + mxbeanName = null; } if (dir != null) { dir.shutdown(); @@ -6353,7 +6359,7 @@ public class FSNamesystem implements Nam * Register NameNodeMXBean */ private void registerMXBean() { - MBeans.register("NameNode", "NameNodeInfo", this); + mxbeanName = MBeans.register("NameNode", "NameNodeInfo", this); } /** Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java?rev=1543612&r1=1543611&r2=1543612&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java Tue Nov 19 22:44:13 2013 @@ -26,6 +26,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; + +import javax.management.ObjectName; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.HadoopIllegalArgumentException; @@ -261,6 +264,7 @@ public class NameNode implements NameNod private NameNodeRpcServer rpcServer; private JvmPauseMonitor pauseMonitor; + private ObjectName nameNodeStatusBeanName; /** Format a new filesystem. Destroys any filesystem that may already * exist at this location. **/ @@ -745,6 +749,10 @@ public class NameNode implements NameNod if (namesystem != null) { namesystem.shutdown(); } + if (nameNodeStatusBeanName != null) { + MBeans.unregister(nameNodeStatusBeanName); + nameNodeStatusBeanName = null; + } } } @@ -1414,7 +1422,7 @@ public class NameNode implements NameNod * Register NameNodeStatusMXBean */ private void registerNNSMXBean() { - MBeans.register("NameNode", "NameNodeStatus", this); + nameNodeStatusBeanName = MBeans.register("NameNode", "NameNodeStatus", this); } @Override // NameNodeStatusMXBean Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestJMXGet.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestJMXGet.java?rev=1543612&r1=1543611&r2=1543612&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestJMXGet.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestJMXGet.java Tue Nov 19 22:44:13 2013 @@ -28,7 +28,12 @@ import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.io.PrintStream; +import java.lang.management.ManagementFactory; import java.util.Random; +import java.util.Set; + +import javax.management.MBeanServerConnection; +import javax.management.ObjectName; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.CommonConfigurationKeys; @@ -92,9 +97,8 @@ public class TestJMXGet { fileSize, fileSize, blockSize, (short) 2, seed); JMXGet jmx = new JMXGet(); - //jmx.setService("*"); // list all hadoop services - //jmx.init(); - //jmx = new JMXGet(); + String serviceName = "NameNode"; + jmx.setService(serviceName); jmx.init(); // default lists namenode mbeans only assertTrue("error printAllValues", checkPrintAllValues(jmx)); @@ -107,6 +111,10 @@ public class TestJMXGet { jmx.getValue("NumOpenConnections"))); cluster.shutdown(); + MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer(); + ObjectName query = new ObjectName("Hadoop:service=" + serviceName + ",*"); + Set<ObjectName> names = mbsc.queryNames(query, null); + assertTrue("No beans should be registered for " + serviceName, names.isEmpty()); } private static boolean checkPrintAllValues(JMXGet jmx) throws Exception { @@ -140,13 +148,15 @@ public class TestJMXGet { fileSize, fileSize, blockSize, (short) 2, seed); JMXGet jmx = new JMXGet(); - //jmx.setService("*"); // list all hadoop services - //jmx.init(); - //jmx = new JMXGet(); - jmx.setService("DataNode"); + String serviceName = "DataNode"; + jmx.setService(serviceName); jmx.init(); assertEquals(fileSize, Integer.parseInt(jmx.getValue("BytesWritten"))); cluster.shutdown(); + MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer(); + ObjectName query = new ObjectName("Hadoop:service=" + serviceName + ",*"); + Set<ObjectName> names = mbsc.queryNames(query, null); + assertTrue("No beans should be registered for " + serviceName, names.isEmpty()); } }