aboutsummaryrefslogtreecommitdiff
path: root/kamon-system-metrics
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2015-02-02 23:53:49 -0300
committerDiego <diegolparra@gmail.com>2015-02-02 23:53:49 -0300
commit640d542f81c5fee8ecb80589934a3c8d2fd52554 (patch)
treef9adb06f314dedfef931986e826183709844f1b4 /kamon-system-metrics
parent190671b31e1931ceed2e94f9651968c48cb3d623 (diff)
downloadKamon-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.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