From a5e526a94deca1f324e101bbaddd1fa864fc3748 Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Sun, 20 May 2012 12:24:52 -0700 Subject: [PATCH] Protect against NaN's Added warns to try to help us track down what situation is actually causing this issue. This is related to Issue #13. --- lib/metriks/exponentially_decaying_sample.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/metriks/exponentially_decaying_sample.rb b/lib/metriks/exponentially_decaying_sample.rb index 0597786..9fd4c7f 100644 --- a/lib/metriks/exponentially_decaying_sample.rb +++ b/lib/metriks/exponentially_decaying_sample.rb @@ -80,7 +80,19 @@ def rescale(now, next_time) @start_time = Time.now @values.keys.each do |key| value = @values.delete(key) - @values[key * Math.exp(-@alpha * (@start_time - old_start_time))] = value + new_key = key * Math.exp(-@alpha * (@start_time - old_start_time)) + + if key.nan? + warn "ExponentiallyDecayingSample found a key of NaN. old_start_time: #{old_start_time.to_f} start_time: #{@start_time.to_f}" + next + end + + if new_key.nan? + warn "ExponentiallyDecayingSample found a new_key of NaN. key: #{key} old_start_time: #{old_start_time.to_f} start_time: #{@start_time.to_f}" + next + end + + @values[new_key] = value end end end