diff options
author | Diego <diegolparra@gmail.com> | 2015-02-02 23:53:49 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2015-02-02 23:53:49 -0300 |
commit | 640d542f81c5fee8ecb80589934a3c8d2fd52554 (patch) | |
tree | f9adb06f314dedfef931986e826183709844f1b4 /kamon-system-metrics | |
parent | 190671b31e1931ceed2e94f9651968c48cb3d623 (diff) | |
download | Kamon-640d542f81c5fee8ecb80589934a3c8d2fd52554.tar.gz Kamon-640d542f81c5fee8ecb80589934a3c8d2fd52554.tar.bz2 Kamon-640d542f81c5fee8ecb80589934a3c8d2fd52554.zip |
= core: protect against negative values recording on DiffRecordingHistogram
Diffstat (limited to 'kamon-system-metrics')
-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 |