From 0f314582b852a84e7a3dda4976a8351ff0245052 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 13 Feb 2012 21:37:30 +0100 Subject: [PATCH] Sprinkling magic dust and webscale sauce --- .../akka/dispatch/BalancingDispatcher.scala | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala b/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala index d2d978341c..7ac06da5ad 100644 --- a/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala +++ b/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala @@ -90,20 +90,23 @@ class BalancingDispatcher( protected[akka] override def unregister(actor: ActorCell) = { buddies.remove(actor) super.unregister(actor) - if (messageQueue.hasMessages) scheduleOne() + scheduleOne() } override protected[akka] def dispatch(receiver: ActorCell, invocation: Envelope) = { messageQueue.enqueue(receiver.self, invocation) - if (!registerForExecution(receiver.mailbox, false, false) && doTeamWork) scheduleOne() + registerForExecution(receiver.mailbox, false, false) + scheduleOne() } - protected def doTeamWork(): Boolean = - attemptTeamWork && (executorService.get().executor match { - case lm: LoadMetrics ⇒ lm.atFullThrottle == false - case other ⇒ true - }) - @tailrec private def scheduleOne(i: Iterator[ActorCell] = buddies.iterator): Unit = - if (i.hasNext && !registerForExecution(i.next.mailbox, false, false)) scheduleOne(i) + if (attemptTeamWork + && messageQueue.hasMessages + && i.hasNext + && (executorService.get().executor match { + case lm: LoadMetrics ⇒ lm.atFullThrottle == false + case other ⇒ true + }) + && !registerForExecution(i.next.mailbox, false, false)) + scheduleOne(i) } \ No newline at end of file