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 cd...@apache.org on 2008/05/06 01:51:08 UTC

svn commit: r653638 - in /hadoop/core/trunk: CHANGES.txt src/java/org/apache/hadoop/metrics/util/MetricsIntValue.java src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingInt.java src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingRate.java

Author: cdouglas
Date: Mon May  5 16:51:08 2008
New Revision: 653638

URL: http://svn.apache.org/viewvc?rev=653638&view=rev
Log:
HADOOP-3085. Catch Exception in metrics util classes to ensure that
misconfigured metrics don't prevent others from updating. (cdouglas)


Modified:
    hadoop/core/trunk/CHANGES.txt
    hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsIntValue.java
    hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingInt.java
    hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingRate.java

Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=653638&r1=653637&r2=653638&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Mon May  5 16:51:08 2008
@@ -165,6 +165,9 @@
     HADOOP-2930. Make {start,stop}-balancer.sh work even if hadoop-daemon.sh
     is not in the PATH. (Spiros Papadimitriou via hairong)
 
+    HADOOP-3085. Catch Exception in metrics util classes to ensure that
+    misconfigured metrics don't prevent others from updating. (cdouglas)
+
 Release 0.17.0 - Unreleased
 
   INCOMPATIBLE CHANGES

Modified: hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsIntValue.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsIntValue.java?rev=653638&r1=653637&r2=653638&view=diff
==============================================================================
--- hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsIntValue.java (original)
+++ hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsIntValue.java Mon May  5 16:51:08 2008
@@ -18,7 +18,10 @@
 package org.apache.hadoop.metrics.util;
 
 import org.apache.hadoop.metrics.MetricsRecord;
+import org.apache.hadoop.util.StringUtils;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * The MetricsIntValue class is for a metric that is not time varied
@@ -28,6 +31,10 @@
  *
  */
 public class MetricsIntValue {  
+
+  protected static final Log LOG =
+    LogFactory.getLog("org.apache.hadoop.metrics.util");
+
   private String name;
   private int value;
   private boolean changed;
@@ -69,8 +76,14 @@
    * @param mr
    */
   public synchronized void pushMetric(final MetricsRecord mr) {
-    if (changed) 
-      mr.incrMetric(name, value);
+    if (changed) {
+      try {
+        mr.incrMetric(name, value);
+      } catch (Exception e) {
+        LOG.info("pushMetric failed for " + name + "\n" +
+            StringUtils.stringifyException(e));
+      }
+    }
     changed = false;
   }
 }

Modified: hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingInt.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingInt.java?rev=653638&r1=653637&r2=653638&view=diff
==============================================================================
--- hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingInt.java (original)
+++ hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingInt.java Mon May  5 16:51:08 2008
@@ -18,6 +18,10 @@
 package org.apache.hadoop.metrics.util;
 
 import org.apache.hadoop.metrics.MetricsRecord;
+import org.apache.hadoop.util.StringUtils;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * The MetricsTimeVaryingInt class is for a metric that naturally
@@ -30,6 +34,8 @@
  */
 public class MetricsTimeVaryingInt {
 
+  protected static final Log LOG =
+    LogFactory.getLog("org.apache.hadoop.metrics.util");
   
   private String name;
   private int currentValue;
@@ -76,7 +82,12 @@
    */
   public synchronized void pushMetric(final MetricsRecord mr) {
     intervalHeartBeat();
-    mr.incrMetric(name, getPreviousIntervalValue());
+    try {
+      mr.incrMetric(name, getPreviousIntervalValue());
+    } catch (Exception e) {
+      LOG.info("pushMetric failed for " + name + "\n" +
+          StringUtils.stringifyException(e));
+    }
   }
   
   

Modified: hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingRate.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingRate.java?rev=653638&r1=653637&r2=653638&view=diff
==============================================================================
--- hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingRate.java (original)
+++ hadoop/core/trunk/src/java/org/apache/hadoop/metrics/util/MetricsTimeVaryingRate.java Mon May  5 16:51:08 2008
@@ -18,6 +18,10 @@
 package org.apache.hadoop.metrics.util;
 
 import org.apache.hadoop.metrics.MetricsRecord;
+import org.apache.hadoop.util.StringUtils;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * The MetricsTimeVaryingRate class is for a rate based metric that
@@ -30,6 +34,9 @@
  */
 public class MetricsTimeVaryingRate {
 
+  protected static final Log LOG =
+    LogFactory.getLog("org.apache.hadoop.metrics.util");
+
   static class Metrics {
     int numOperations = 0;
     long time = 0;  // total time or average time
@@ -125,8 +132,13 @@
    */
   public synchronized void pushMetric(final MetricsRecord mr) {
     intervalHeartBeat();
-    mr.incrMetric(name + "_num_ops", getPreviousIntervalNumOps());
-    mr.incrMetric(name + "_avg_time", (int)getPreviousIntervalAverageTime());
+    try {
+      mr.incrMetric(name + "_num_ops", getPreviousIntervalNumOps());
+      mr.incrMetric(name + "_avg_time", getPreviousIntervalNumOps());
+    } catch (Exception e) {
+      LOG.info("pushMetric failed for " + name + "\n" +
+          StringUtils.stringifyException(e));
+    }
   }
   
   /**