|
@@ -18,6 +18,10 @@
|
|
package org.apache.hadoop.metrics.util;
|
|
package org.apache.hadoop.metrics.util;
|
|
|
|
|
|
import org.apache.hadoop.metrics.MetricsRecord;
|
|
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
|
|
* The MetricsTimeVaryingRate class is for a rate based metric that
|
|
@@ -30,6 +34,9 @@ import org.apache.hadoop.metrics.MetricsRecord;
|
|
*/
|
|
*/
|
|
public class MetricsTimeVaryingRate {
|
|
public class MetricsTimeVaryingRate {
|
|
|
|
|
|
|
|
+ protected static final Log LOG =
|
|
|
|
+ LogFactory.getLog("org.apache.hadoop.metrics.util");
|
|
|
|
+
|
|
static class Metrics {
|
|
static class Metrics {
|
|
int numOperations = 0;
|
|
int numOperations = 0;
|
|
long time = 0; // total time or average time
|
|
long time = 0; // total time or average time
|
|
@@ -125,8 +132,13 @@ public class MetricsTimeVaryingRate {
|
|
*/
|
|
*/
|
|
public synchronized void pushMetric(final MetricsRecord mr) {
|
|
public synchronized void pushMetric(final MetricsRecord mr) {
|
|
intervalHeartBeat();
|
|
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));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|