From fa0ec4bd01acc6a7df6f9c6bdbd34cb8e6c49f04 Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Wed, 29 Aug 2012 11:48:24 +0200 Subject: [PATCH] Avoid ArithmeticException: / by zero in routers, see #2443 * Route to deadletters when no routees --- akka-actor/src/main/scala/akka/routing/Routing.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/akka-actor/src/main/scala/akka/routing/Routing.scala b/akka-actor/src/main/scala/akka/routing/Routing.scala index edada342e7..a15068bccd 100644 --- a/akka-actor/src/main/scala/akka/routing/Routing.scala +++ b/akka-actor/src/main/scala/akka/routing/Routing.scala @@ -518,7 +518,8 @@ trait RoundRobinLike { this: RouterConfig ⇒ def getNext(): ActorRef = { val _routees = routeeProvider.routees - _routees((next.getAndIncrement % _routees.size).asInstanceOf[Int]) + if (_routees.isEmpty) routeeProvider.context.system.deadLetters + else _routees((next.getAndIncrement % _routees.size).asInstanceOf[Int]) } { @@ -634,7 +635,8 @@ trait RandomLike { this: RouterConfig ⇒ def getNext(): ActorRef = { val _routees = routeeProvider.routees - _routees(ThreadLocalRandom.current.nextInt(_routees.size)) + if (_routees.isEmpty) routeeProvider.context.system.deadLetters + else _routees(ThreadLocalRandom.current.nextInt(_routees.size)) } {