aboutsummaryrefslogtreecommitdiff
path: root/kamon-system-metrics/src/main/scala/kamon/system/sigar/DiffRecordingHistogram.scala
diff options
context:
space:
mode:
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.scala8
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