diff options
Diffstat (limited to 'kamon-system-metrics/src/main/scala/kamon/system/sigar/DiffRecordingHistogram.scala')
-rw-r--r-- | kamon-system-metrics/src/main/scala/kamon/system/sigar/DiffRecordingHistogram.scala | 8 |
1 files 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 |