HDFS-1386. TestJMXGet fails in jdk7 (jeagles)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1543612 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c78c0e277f
commit
587f68b160
|
@ -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)
|
||||
|
|
|
@ -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, Configurable, JournalNodeMXBean {
|
|||
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, Configurable, JournalNodeMXBean {
|
|||
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, Configurable, JournalNodeMXBean {
|
|||
* Register JournalNodeMXBean
|
||||
*/
|
||||
private void registerJNMXBean() {
|
||||
MBeans.register("JournalNode", "JournalNodeInfo", this);
|
||||
journalNodeInfoBeanName = MBeans.register("JournalNode", "JournalNodeInfo", this);
|
||||
}
|
||||
|
||||
private class ErrorReporter implements StorageErrorReporter {
|
||||
|
|
|
@ -96,6 +96,8 @@ import java.security.PrivilegedExceptionAction;
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -5517,6 +5517,7 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
|
|||
}
|
||||
|
||||
private ObjectName mbeanName;
|
||||
private ObjectName mxbeanName;
|
||||
|
||||
/**
|
||||
* Register the FSNamesystem MBean using the name
|
||||
|
@ -5540,6 +5541,11 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
|
|||
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 Namesystem, FSClusterStats,
|
|||
* Register NameNodeMXBean
|
||||
*/
|
||||
private void registerMXBean() {
|
||||
MBeans.register("NameNode", "NameNodeInfo", this);
|
||||
mxbeanName = MBeans.register("NameNode", "NameNodeInfo", this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 NameNodeStatusMXBean {
|
|||
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 NameNodeStatusMXBean {
|
|||
if (namesystem != null) {
|
||||
namesystem.shutdown();
|
||||
}
|
||||
if (nameNodeStatusBeanName != null) {
|
||||
MBeans.unregister(nameNodeStatusBeanName);
|
||||
nameNodeStatusBeanName = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1414,7 +1422,7 @@ public class NameNode implements NameNodeStatusMXBean {
|
|||
* Register NameNodeStatusMXBean
|
||||
*/
|
||||
private void registerNNSMXBean() {
|
||||
MBeans.register("NameNode", "NameNodeStatus", this);
|
||||
nameNodeStatusBeanName = MBeans.register("NameNode", "NameNodeStatus", this);
|
||||
}
|
||||
|
||||
@Override // NameNodeStatusMXBean
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue