Problem still persists. 1. I changed boot procedure to wait until cluster starts. it is done by:
class ClusterWaiter(p: Promise[Boolean]) extends Actor { override def receive = { case _ => p.complete(Success(true)) context.stop(self) } } def startCluster() = { //eagerly init cluster dispatcher, the one used to start cluster daemon system.dispatchers.lookup("cluster-dispatcher") val p = Promise[Boolean] val waiter = system.actorOf(actor.Props(classOf[ClusterWaiter], p), "cluster-waiter") // sendCurrentClusterState requires internal cluster actor to start Cluster(system).sendCurrentClusterState(waiter) //wait for some signal from cluster Await.ready(p.future, 60 seconds) } In that time, nothing else takes CPU or IO, app just waits for cluster to start 2. I changed actor creation timeout to 120 seconds 3. Still I get exceptions on startup: 12:15:43.025 [sgActors-akka.actor.default-dispatcher-3] INFO Cluster(akka://sgActors): Cluster Node [akka.tcp://sgact...@app1.groupl.es:2552] - Starting up... 12:17:43.105 [main] ERROR n.l.h.p.HTTPProvider: Failed to Boot! Your application may not run properly 2 minutes of idle waiting for cluster start. 12:17:43.186 [sgActors-akka.actor.default-dispatcher-4] ERROR Cluster(akka://sgActors): Failed to startup Cluster. You can try to increase 'akka.actor.creation-timeout'. java.util.concurrent.TimeoutException: Futures timed out after [120000 milliseconds] at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) ~[scala-library-2.11.7.jar:na] at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) ~[scala-library-2.11.7.jar:na] at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190) ~[scala-library-2.11.7.jar:na] at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) ~[scala-library-2.11.7.jar:na] at scala.concurrent.Await$.result(package.scala:190) ~[scala-library-2.11.7.jar:na] at akka.cluster.Cluster.liftedTree1$1(Cluster.scala:172) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster.<init>(Cluster.scala:171) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.createExtension(Cluster.scala:42) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.createExtension(Cluster.scala:37) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:713) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ExtensionId$class.apply(Extension.scala:79) ~[akka-actor_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.apply(Cluster.scala:37) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.ClusterActorRefProvider.createRemoteWatcher(ClusterActorRefProvider.scala:66) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:186) ~[akka-remote_2.11-2.3.12.jar:na] at akka.cluster.ClusterActorRefProvider.init(ClusterActorRefProvider.scala:58) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.liftedTree2$1(ActorSystem.scala:620) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:617) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl._start(ActorSystem.scala:617) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.start(ActorSystem.scala:634) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystem$.apply(ActorSystem.scala:142) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystem$.apply(ActorSystem.scala:119) ~[akka-actor_2.11-2.3.12.jar:na] Caused by: java.lang.NullPointerException: null at akka.cluster.Cluster.shutdown(Cluster.scala:358) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster.liftedTree1$1(Cluster.scala:176) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster.<init>(Cluster.scala:171) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.createExtension(Cluster.scala:42) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.createExtension(Cluster.scala:37) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:713) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ExtensionId$class.apply(Extension.scala:79) ~[akka-actor_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.apply(Cluster.scala:37) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.ClusterActorRefProvider.createRemoteWatcher(ClusterActorRefProvider.scala:66) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:186) ~[akka-remote_2.11-2.3.12.jar:na] at akka.cluster.ClusterActorRefProvider.init(ClusterActorRefProvider.scala:58) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.liftedTree2$1(ActorSystem.scala:620) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:617) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl._start(ActorSystem.scala:617) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.start(ActorSystem.scala:634) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystem$.apply(ActorSystem.scala:142) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystem$.apply(ActorSystem.scala:119) ~[akka-actor_2.11-2.3.12.jar:na] and then 12:17:43.201 [sgActors-akka.actor.default-dispatcher-20] INFO Cluster(akka://sgActors): Cluster Node [akka.tcp://sgact...@app1.groupl.es:2552] - Starting up... 12:17:43.223 [sgActors-akka.actor.default-dispatcher-20] ERROR a.a.OneForOneStrategy: exception during creation akka.actor.ActorInitializationException: exception during creation at akka.actor.ActorInitializationException$.apply(Actor.scala:166) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorCell.create(ActorCell.scala:596) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478) ~[akka-actor_2.11-2.3.12.jar:na] at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263) ~[akka-actor_2.11-2.3.12.jar:na] at akka.dispatch.Mailbox.run(Mailbox.scala:219) ~[akka-actor_2.11-2.3.12.jar:na] at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.11-2.3.12.jar:na] at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.7.jar:na] at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.7.jar:na] at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.7.jar:na] at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.7.jar:na] Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_60] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_60] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_60] at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_60] at akka.util.Reflect$.instantiate(Reflect.scala:66) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ArgsReflectConstructor.produce(Props.scala:352) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.Props.newActor(Props.scala:252) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorCell.newActor(ActorCell.scala:552) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorCell.create(ActorCell.scala:578) ~[akka-actor_2.11-2.3.12.jar:na] ... 9 common frames omitted Caused by: akka.actor.InvalidActorNameException: actor name [cluster] is not unique! at akka.actor.dungeon.ChildrenContainer$NormalChildrenContainer.reserve(ChildrenContainer.scala:130) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.dungeon.Children$class.reserveChild(Children.scala:76) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorCell.reserveChild(ActorCell.scala:369) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.dungeon.Children$class.makeChild(Children.scala:201) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.dungeon.Children$class.attachChild(Children.scala:41) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorCell.attachChild(ActorCell.scala:369) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.systemActorOf(ActorSystem.scala:551) ~[akka-actor_2.11-2.3.12.jar:na] at akka.cluster.Cluster.<init>(Cluster.scala:162) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.createExtension(Cluster.scala:42) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.createExtension(Cluster.scala:37) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:713) ~[akka-actor_2.11-2.3.12.jar:na] at akka.actor.ExtensionId$class.apply(Extension.scala:79) ~[akka-actor_2.11-2.3.12.jar:na] at akka.cluster.Cluster$.apply(Cluster.scala:37) ~[akka-cluster_2.11-2.3.12.jar:na] at akka.cluster.ClusterMetricsCollector.<init>(ClusterMetricsCollector.scala:47) ~[akka-cluster_2.11-2.3.12.jar:na] ... 18 common frames omitted It seems that private[cluster] def shutdown(): Unit = { if (_isTerminated.compareAndSet(false, true)) { logInfo("Shutting down...") system.stop(clusterDaemons) readView.close() closeScheduler() clusterJmx foreach { _.unregisterMBean() } logInfo("Successfully shut down") } } fails on readView.close due to NPE during cluster shutdown Usually the whole scenario works within milliseconds, but from time to time it fails, regardles of the actor.creation-timeout setting On the other hand, [cluster] name is not unique suggests that the [cluster] actor was already created other log entries: 12:17:43.187 [sgActors-akka.actor.default-dispatcher-4] INFO Cluster(akka://sgActors): Cluster Node [akka.tcp://sgact...@app1.groupl.es:2552] - Starting up... 12:17:43.187 [sgActors-akka.actor.default-dispatcher-4] INFO Cluster(akka://sgActors): Cluster Node [akka.tcp://sgact...@app1.groupl.es:2552] - Starting up... 12:17:43.188 [sgActors-akka.actor.default-dispatcher-4] INFO Cluster(akka://sgActors): Cluster Node [akka.tcp://sgact...@app1.groupl.es:2552] - Starting up... 12:17:43.201 [sgActors-akka.actor.default-dispatcher-20] INFO Cluster(akka://sgActors): Cluster Node [akka.tcp://sgact...@app1.groupl.es:2552] - Starting up... suggests that Cluster extension is starting several times, from different threads. Maybe it is a root cause of the problem? Maybe there is a race in extension startup / cluster startup ? W dniu czwartek, 6 sierpnia 2015 11:59:39 UTC+2 użytkownik Marek Żebrowski napisał: > > I did not change the default dispatcher. I hope that I have all heavy task > run by other dispatchers - I'll double check it. > > W dniu środa, 5 sierpnia 2015 22:57:05 UTC+2 użytkownik Patrik Nordwall > napisał: >> >> Have you changed the default configuration of the default-dispatcher, or >> do you do any blocking (long running) tasks on the default-dispatcher? >> /Patrik >> >> On Mon, Aug 3, 2015 at 10:42 AM, Marek Żebrowski <marek.z...@gmail.com> >> wrote: >> >>> That failure leads to another failure: actor name not unique >>> >>> 08:11:39.893 [sgActors-akka.actor.default-dispatcher-17] ERROR >>>> a.c.ClusterCoreSupervisor: actor name [cluster] is not unique! >>>> akka.actor.InvalidActorNameException: actor name [cluster] is not >>>> unique! >>>> >>>> -- >>> >>>>>>>>>> Read the docs: http://akka.io/docs/ >>> >>>>>>>>>> Check the FAQ: >>> http://doc.akka.io/docs/akka/current/additional/faq.html >>> >>>>>>>>>> Search the archives: >>> https://groups.google.com/group/akka-user >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Akka User List" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to akka-user+...@googlegroups.com. >>> To post to this group, send email to akka...@googlegroups.com. >>> Visit this group at http://groups.google.com/group/akka-user. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> >> Patrik Nordwall >> Typesafe <http://typesafe.com/> - Reactive apps on the JVM >> Twitter: @patriknw >> >> -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+unsubscr...@googlegroups.com. To post to this group, send email to akka-user@googlegroups.com. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.