From 645ae4cb31134914f95696b333348546d64355da Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Wed, 21 Dec 2016 16:15:56 +0100 Subject: [PATCH] log join retries, #22053 --- .../src/main/scala/akka/cluster/ClusterDaemon.scala | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala index e44d3f044a..ff6474d242 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala @@ -1209,6 +1209,10 @@ private[cluster] final class FirstSeedNodeProcess(seedNodes: immutable.IndexedSe remainingSeedNodes foreach { a ⇒ context.actorSelection(context.parent.path.toStringWithAddress(a)) ! InitJoin } } else { // no InitJoinAck received, initialize new cluster by joining myself + if (log.isDebugEnabled) + log.debug( + "Couldn't join other seed nodes, will join myself. seed-nodes=[{}]", + seedNodes.mkString(", ")) context.parent ! JoinTo(selfAddress) context.stop(self) } @@ -1262,11 +1266,14 @@ private[cluster] final class JoinSeedNodeProcess(seedNodes: immutable.IndexedSeq context.setReceiveTimeout(Cluster(context.system).settings.SeedNodeTimeout) + var attempt = 0 + override def preStart(): Unit = self ! JoinSeedNode def receive = { case JoinSeedNode ⇒ // send InitJoin to all seed nodes (except myself) + attempt += 1 seedNodes.collect { case a if a != selfAddress ⇒ context.actorSelection(context.parent.path.toStringWithAddress(a)) } foreach { _ ! InitJoin } @@ -1276,6 +1283,10 @@ private[cluster] final class JoinSeedNodeProcess(seedNodes: immutable.IndexedSeq context.become(done) case InitJoinNack(_) ⇒ // that seed was uninitialized case ReceiveTimeout ⇒ + if (attempt >= 2) + log.warning( + "Couldn't join seed nodes after [{}] attmpts, will try again. seed-nodes=[{}]", + attempt, seedNodes.filterNot(_ == selfAddress).mkString(", ")) // no InitJoinAck received, try again self ! JoinSeedNode }