Browse Source

HADOOP-8027. Visiting /jmx on the daemon web interfaces may print unnecessary error in logs. Contributed by Aaron T. Myers. Ported to hadoop-1 by Hitesh Shah.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1@1335195 13f79535-47bb-0310-9956-ffa450edef68
Matthew Foley 13 years ago
parent
commit
4f9225f20a
2 changed files with 13 additions and 0 deletions
  1. 3 0
      CHANGES.txt
  2. 10 0
      src/core/org/apache/hadoop/jmx/JMXJsonServlet.java

+ 3 - 0
CHANGES.txt

@@ -320,6 +320,9 @@ Release 1.0.3 - 2012.05.07
     MAPREDUCE-4012. Hadoop Job setup error leaves no useful info to users 
     (when LinuxTaskController is used) (tgraves)
 
+    HADOOP-8027. Visiting /jmx on the daemon web interfaces may print unnecessary
+    error in logs (Aaron Myers and Hitesh Shah)
+
 Release 1.0.2 - 2012.03.24
 
   NEW FEATURES

+ 10 - 0
src/core/org/apache/hadoop/jmx/JMXJsonServlet.java

@@ -34,6 +34,7 @@ import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
+import javax.management.RuntimeMBeanException;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeType;
 import javax.management.openmbean.TabularData;
@@ -249,6 +250,15 @@ public class JMXJsonServlet extends HttpServlet {
     Object value = null;
     try {
       value = mBeanServer.getAttribute(oname, attName);
+    } catch (RuntimeMBeanException e) {
+      // UnsupportedOperationExceptions happen in the normal course of business,
+      // so no need to log them as errors all the time.
+      if (e.getCause() instanceof UnsupportedOperationException) {
+        LOG.debug("getting attribute "+attName+" of "+oname+" threw an exception", e);
+      } else {
+        LOG.error("getting attribute "+attName+" of "+oname+" threw an exception", e);
+      }
+      return;
     } catch (AttributeNotFoundException e) {
       //Ignored the attribute was not found, which should never happen because the bean
       //just told us that it has this attribute, but if this happens just don't output