From 640d542f81c5fee8ecb80589934a3c8d2fd52554 Mon Sep 17 00:00:00 2001 From: Diego Date: Mon, 2 Feb 2015 23:53:49 -0300 Subject: = core: protect against negative values recording on DiffRecordingHistogram --- .../main/scala/kamon/system/sigar/DiffRecordingHistogram.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kamon-system-metrics/src/main/scala/kamon/system/sigar/DiffRecordingHistogram.scala b/kamon-system-metrics/src/main/scala/kamon/system/sigar/DiffRecordingHistogram.scala index be11fd81..d13cbed2 100644 --- a/kamon-system-metrics/src/main/scala/kamon/system/sigar/DiffRecordingHistogram.scala +++ b/kamon-system-metrics/src/main/scala/kamon/system/sigar/DiffRecordingHistogram.scala @@ -30,8 +30,12 @@ class DiffRecordingHistogram(wrappedHistogram: Histogram) extends Histogram { private val _lastObservedValue = new AtomicLong(0) private def processRecording(value: Long, count: Long): Unit = { - if (_recordedAtLeastOnce) - wrappedHistogram.record(value - _lastObservedValue.getAndSet(value), count) + if (_recordedAtLeastOnce) { + val diff = value - _lastObservedValue.getAndSet(value) + val current = if(diff >= 0) diff else 0L + + wrappedHistogram.record(current, count) + } else { _lastObservedValue.set(value) _recordedAtLeastOnce = true -- cgit v1.2.3