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; + } } }