From af11bfdbf7b452b28bd64ed560432dc0d02c85dd Mon Sep 17 00:00:00 2001 From: Ivan Topolnak Date: Wed, 9 Apr 2014 16:13:29 -0300 Subject: = core: workaround border cases where mailbox size counting might fall bellow zero --- .../scala/akka/instrumentation/ActorMessagePassingTracing.scala | 9 +++++++-- 1 file 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) } } -- cgit v1.2.3