Recently we have upgraded to Akka 2.3.14 and I've noticed a very strange behaviour.
Right after startup we start receiving messages on our production platform, and I the logs I see that it takes several minutes for actors start processing messages.
Doing jstack in the period that no messages are processed, the only weird thing i can see is the following:
java.lang.Thread.State: RUNNABLE
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike$class.filter(TraversableLike.scala:263)
at scala.collection.AbstractTraversable.filter(Traversable.scala:105)
at scala.collection.TraversableLike$class.filterNot(TraversableLike.scala:274)
at scala.collection.AbstractTraversable.filterNot(Traversable.scala:105)
at akka.routing.RoutedActorCell$$anonfun$1.apply(RoutedActorCell.scala:77)
at akka.routing.RoutedActorCell$$anonfun$1.apply(RoutedActorCell.scala:77)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
at akka.routing.RoutedActorCell.removeRoutees(RoutedActorCell.scala:77)
at akka.routing.ResizablePoolCell.resize(Resizer.scala:288)
at akka.routing.ResizablePoolCell.preSuperStart(Resizer.scala:267)
at akka.routing.RoutedActorCell.start(RoutedActorCell.scala:123)
at akka.routing.RoutedActorCell.start(RoutedActorCell.scala:41)
at akka.actor.RepointableActorRef.point(RepointableActorRef.scala:105)
at akka.actor.ActorCell.handleSupervise(ActorCell.scala:614)
at akka.actor.ActorCell.supervise(ActorCell.scala:606)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:463)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263)
at akka.dispatch.Mailbox.run(Mailbox.scala:219)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
After that period of "non-processing" is over, that stack trace does not appear anymore.
My best guess is that it is somehow related to latest changes to consistent-hashing pool that was done lately, but then again its just a guess.
Thanks in advance for your help.