aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnak <itopolnak@despegar.com>2014-04-09 16:13:29 -0300
committerIvan Topolnak <itopolnak@despegar.com>2014-04-09 16:13:29 -0300
commitaf11bfdbf7b452b28bd64ed560432dc0d02c85dd (patch)
tree7324c807b8ba70acacdec0e8db3a126e6bd253d6
parent9b156f85943f96accb5b24bd54bb098cc452f7c9 (diff)
downloadKamon-af11bfdbf7b452b28bd64ed560432dc0d02c85dd.tar.gz
Kamon-af11bfdbf7b452b28bd64ed560432dc0d02c85dd.tar.bz2
Kamon-af11bfdbf7b452b28bd64ed560432dc0d02c85dd.zip
= core: workaround border cases where mailbox size counting might fall bellow zero
-rw-r--r--kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala b/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala
index 85a47ee3..87ad4f92 100644
--- a/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala
+++ b/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala
@@ -59,7 +59,10 @@ class BehaviourInvokeTracing {
am ⇒
am.processingTime.record(System.nanoTime() - timestampBeforeProcessing)
am.timeInMailbox.record(timestampBeforeProcessing - contextAndTimestamp.captureNanoTime)
- am.mailboxSize.record(cellWithMetrics.queueSize.decrementAndGet())
+
+ val currentMailboxSize = cellWithMetrics.queueSize.decrementAndGet()
+ if(currentMailboxSize >= 0)
+ am.mailboxSize.record(currentMailboxSize)
}
}
}
@@ -72,7 +75,9 @@ class BehaviourInvokeTracing {
val cellWithMetrics = cell.asInstanceOf[ActorCellMetrics]
cellWithMetrics.actorMetricsRecorder.map {
am ⇒
- am.mailboxSize.record(cellWithMetrics.queueSize.incrementAndGet())
+ val currentMailboxSize = cellWithMetrics.queueSize.incrementAndGet()
+ if(currentMailboxSize >= 0)
+ am.mailboxSize.record(currentMailboxSize)
}
}