From 8abcf8ce2a1ca080dcb316dbc7adc6c149ef71d6 Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Mon, 9 Jan 2012 20:50:18 +0100 Subject: [PATCH] Avoid AtomicInteger overflow in RoundRobinRouter. See #1610 --- akka-actor/src/main/scala/akka/routing/Routing.scala | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/akka-actor/src/main/scala/akka/routing/Routing.scala b/akka-actor/src/main/scala/akka/routing/Routing.scala index d1cf7d664f..5ee7ca76d1 100644 --- a/akka-actor/src/main/scala/akka/routing/Routing.scala +++ b/akka-actor/src/main/scala/akka/routing/Routing.scala @@ -4,7 +4,7 @@ package akka.routing import akka.actor._ -import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.atomic.AtomicLong import akka.util.{ Duration, Timeout } import akka.config.ConfigurationException import scala.collection.JavaConversions.iterableAsScalaIterable @@ -264,10 +264,11 @@ trait RoundRobinLike { this: RouterConfig ⇒ def createRoute(props: Props, context: ActorContext, ref: RoutedActorRef): Route = { createAndRegisterRoutees(props, context, nrOfInstances, routees) - val next = new AtomicInteger(0) + val next = new AtomicLong(0) def getNext(): ActorRef = { - ref.routees(next.getAndIncrement % ref.routees.size) + val _routees = ref.routees + _routees((next.getAndIncrement % _routees.size).asInstanceOf[Int]) } {