You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by ki...@apache.org on 2015/11/18 20:49:53 UTC
[2/4] storm git commit: Guard against both Infinity and NaN
Guard against both Infinity and NaN
Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/a305c141
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/a305c141
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/a305c141
Branch: refs/heads/master
Commit: a305c141bdfc68964b55d2d760d01f48d3385873
Parents: 3857644
Author: Derek Dagit <de...@yahoo-inc.com>
Authored: Tue Nov 17 11:12:20 2015 -0600
Committer: Derek Dagit <de...@yahoo-inc.com>
Committed: Tue Nov 17 11:12:20 2015 -0600
----------------------------------------------------------------------
storm-core/src/clj/backtype/storm/stats.clj | 5 +++--
.../storm/metric/internal/LatencyStatAndMetric.java | 15 ++++++---------
storm-core/src/jvm/backtype/storm/utils/Utils.java | 4 ++++
3 files changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/storm/blob/a305c141/storm-core/src/clj/backtype/storm/stats.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/stats.clj b/storm-core/src/clj/backtype/storm/stats.clj
index cb77bb7..ea4efe4 100644
--- a/storm-core/src/clj/backtype/storm/stats.clj
+++ b/storm-core/src/clj/backtype/storm/stats.clj
@@ -288,10 +288,11 @@
rate)))
(defn valid-number?
- "Returns true if x is a number that is not NaN, false otherwise"
+ "Returns true if x is a number that is not NaN or Infinity, false otherwise"
[x]
(and (number? x)
- (not (Double/isNaN x))))
+ (not (Double/isNaN x))
+ (not (Double/isInfinite x))))
(defn apply-default
[f defaulting-fn & args]
http://git-wip-us.apache.org/repos/asf/storm/blob/a305c141/storm-core/src/jvm/backtype/storm/metric/internal/LatencyStatAndMetric.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/metric/internal/LatencyStatAndMetric.java b/storm-core/src/jvm/backtype/storm/metric/internal/LatencyStatAndMetric.java
index 8c472bd..614f95e 100644
--- a/storm-core/src/jvm/backtype/storm/metric/internal/LatencyStatAndMetric.java
+++ b/storm-core/src/jvm/backtype/storm/metric/internal/LatencyStatAndMetric.java
@@ -19,11 +19,10 @@ package backtype.storm.metric.internal;
import java.util.Map;
import java.util.HashMap;
-import java.util.Timer;
import java.util.TimerTask;
-import java.util.concurrent.atomic.AtomicLong;
import backtype.storm.metric.api.IMetric;
+import backtype.storm.utils.Utils;
/**
* Acts as a Latency Metric, but also keeps track of approximate latency
@@ -146,9 +145,8 @@ public class LatencyStatAndMetric implements IMetric {
long timeSpent = now - _bucketStart;
long exactExtraCountSum = count + _exactExtraCount;
- double ret = exactExtraCountSum > 0 ?
- ((double)(lat + _exactExtraLat))/exactExtraCountSum :
- 0.0;
+ double ret = Utils.zeroIfNaNOrInf(
+ ((double) (lat + _exactExtraLat)) / exactExtraCountSum);
_bucketStart = now;
_exactExtraLat = 0;
_exactExtraCount = 0;
@@ -231,9 +229,8 @@ public class LatencyStatAndMetric implements IMetric {
ret.put("10800", readApproximateLatAvg(lat, count, timeSpent, _thTime, _thLatBuckets, _thCountBuckets, 10800 * 1000));
ret.put("86400", readApproximateLatAvg(lat, count, timeSpent, _odTime, _odLatBuckets, _odCountBuckets, 86400 * 1000));
long allTimeCountSum = count + _allTimeCount;
- ret.put(":all-time", allTimeCountSum > 0 ?
- ((double)lat + _allTimeLat)/allTimeCountSum :
- 0.0);
+ ret.put(":all-time", Utils.zeroIfNaNOrInf(
+ (double) lat + _allTimeLat)/allTimeCountSum);
return ret;
}
@@ -248,7 +245,7 @@ public class LatencyStatAndMetric implements IMetric {
totalCount += countBuckets[i];
timeNeeded -= bucketTime[i];
}
- return totalCount > 0 ? ((double)totalLat)/totalCount : 0.0;
+ return Utils.zeroIfNaNOrInf(((double) totalLat) / totalCount);
}
public void close() {
http://git-wip-us.apache.org/repos/asf/storm/blob/a305c141/storm-core/src/jvm/backtype/storm/utils/Utils.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/utils/Utils.java b/storm-core/src/jvm/backtype/storm/utils/Utils.java
index 8c100e1..00af367 100644
--- a/storm-core/src/jvm/backtype/storm/utils/Utils.java
+++ b/storm-core/src/jvm/backtype/storm/utils/Utils.java
@@ -760,5 +760,9 @@ public class Utils {
raf.close();
return val;
}
+
+ public static double zeroIfNaNOrInf(double x) {
+ return (Double.isNaN(x) || Double.isInfinite(x)) ? 0.0 : x;
+ }
}