From a9fd4ab40c744b810ce00fae808f9f7e668a8332 Mon Sep 17 00:00:00 2001 From: Jason Jackson Date: Thu, 6 Dec 2012 13:55:06 -0800 Subject: [PATCH] MeanReducer no longer divides by zero. --- src/clj/backtype/storm/daemon/executor.clj | 5 ++++- src/jvm/backtype/storm/metric/api/MeanReducer.java | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/clj/backtype/storm/daemon/executor.clj b/src/clj/backtype/storm/daemon/executor.clj index 95aff4345..2e176bcd2 100644 --- a/src/clj/backtype/storm/daemon/executor.clj +++ b/src/clj/backtype/storm/daemon/executor.clj @@ -269,7 +269,10 @@ interval) data-points (->> name->imetric (map (fn [[name imetric]] - (IMetricsConsumer$DataPoint. name (.getValueAndReset ^IMetric imetric)))) + (let [value (.getValueAndReset ^IMetric imetric)] + (if value + (IMetricsConsumer$DataPoint. name value))))) + (filter identity) (into []))]] (if (seq data-points) (task/send-unanchored task-data Constants/METRICS_STREAM_ID [task-info data-points]))))) diff --git a/src/jvm/backtype/storm/metric/api/MeanReducer.java b/src/jvm/backtype/storm/metric/api/MeanReducer.java index 2133dd9f3..38f627507 100644 --- a/src/jvm/backtype/storm/metric/api/MeanReducer.java +++ b/src/jvm/backtype/storm/metric/api/MeanReducer.java @@ -29,6 +29,10 @@ public MeanReducerState reduce(MeanReducerState acc, Object input) { } public Object extractResult(MeanReducerState acc) { - return new Double(acc.sum / (double)acc.count); + if(acc.count > 0) { + return new Double(acc.sum / (double)acc.count); + } else { + return null; + } } }