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 om...@apache.org on 2011/03/04 05:42:11 UTC
svn commit: r1077668 - in
/hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server:
datanode/DataNode.java namenode/FSNamesystem.java
Author: omalley
Date: Fri Mar 4 04:42:10 2011
New Revision: 1077668
URL: http://svn.apache.org/viewvc?rev=1077668&view=rev
Log:
commit 1856c0e09ca79043cfb5822de3d0a171d2dbdcfb
Author: Tanping Wang <ta...@yahoo-inc.com>
Date: Thu Sep 9 16:58:47 2010 -0700
[]unregister namenode datanode info MXBean.
Modified:
hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
Modified: hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=1077668&r1=1077667&r2=1077668&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java Fri Mar 4 04:42:10 2011
@@ -116,6 +116,7 @@ import org.mortbay.util.ajax.JSON;
import java.lang.management.ManagementFactory;
import javax.management.InstanceAlreadyExistsException;
+import javax.management.InstanceNotFoundException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
@@ -236,6 +237,8 @@ public class DataNode extends Configured
private SecureResources secureResources = null;
+ private ObjectName mxBeanName = null;
+
/**
* Current system time.
* @return current time in msec.
@@ -466,12 +469,30 @@ public class DataNode extends Configured
private void registerMXBean() {
// register MXBean
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
- try {
- ObjectName mxbeanName = new ObjectName("HadoopInfo:type=DataNodeInfo");
- mbs.registerMBean(this, mxbeanName);
- } catch ( javax.management.JMException e ) {
- LOG.warn("Failed to register NameNode MXBean", e);
+ final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ if (mxBeanName == null) {
+ try {
+ mxBeanName = new ObjectName("HadoopInfo:type=DataNodeInfo");
+ mbs.registerMBean(this, mxBeanName);
+ } catch ( javax.management.JMException e ) {
+ LOG.warn("Failed to register DataNodeMXBean", e);
+ }
+ }
+ }
+
+ private void unRegisterMXBean() {
+ if (mxBeanName == null)
+ return;
+ final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ if (mbs.isRegistered(mxBeanName)){
+ try {
+ mbs.unregisterMBean(mxBeanName);
+ } catch (InstanceNotFoundException e ) {
+ LOG.warn(mxBeanName, e);
+ } catch (javax.management.JMException e) {
+ LOG.warn("Error unregistering "+ mxBeanName, e);
+ }
+ mxBeanName = null;
}
}
@@ -684,6 +705,7 @@ public class DataNode extends Configured
* Otherwise, deadlock might occur.
*/
public void shutdown() {
+ this.unRegisterMXBean();
if (infoServer != null) {
try {
infoServer.stop();
Modified: hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1077668&r1=1077667&r2=1077668&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Fri Mar 4 04:42:10 2011
@@ -49,6 +49,7 @@ import java.util.TreeSet;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
+import javax.management.InstanceNotFoundException;
import javax.management.MBeanServer;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
@@ -343,6 +344,8 @@ public class FSNamesystem implements FSC
// precision of access times.
private long accessTimePrecision = 0;
+ private ObjectName mxBeanName = null;
+
/**
* FSNamesystem constructor.
*/
@@ -4804,6 +4807,8 @@ public class FSNamesystem implements FSC
public void shutdown() {
if (mbeanName != null)
MBeans.unregister(mbeanName);
+ if (mxBeanName != null)
+ unRegisterMXBean();
}
@@ -5158,15 +5163,32 @@ public class FSNamesystem implements FSC
*/
private void registerMXBean() {
// register MXBean
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
- try {
- ObjectName mxbeanName = new ObjectName("HadoopInfo:type=NameNodeInfo");
- mbs.registerMBean(this, mxbeanName);
- } catch ( javax.management.JMException e ) {
- LOG.warn("Failed to register NameNodeMXBean", e);
+ final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ if (mxBeanName == null) {
+ try {
+ mxBeanName = new ObjectName("HadoopInfo:type=NameNodeInfo");
+ mbs.registerMBean(this, mxBeanName);
+ } catch ( javax.management.JMException e ) {
+ LOG.warn("Failed to register NameNodeMXBean", e);
+ }
}
}
+ private void unRegisterMXBean() {
+ if (mxBeanName == null)
+ return;
+ final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ if (mbs.isRegistered(mxBeanName)){
+ try {
+ mbs.unregisterMBean(mxBeanName);
+ } catch (InstanceNotFoundException e ) {
+ LOG.warn(mxBeanName, e);
+ } catch (javax.management.JMException e) {
+ LOG.warn("Error unregistering "+ mxBeanName, e);
+ }
+ mxBeanName = null;
+ }
+ }
/**
* Class representing Namenode information for JMX interfaces
*/