diff --git a/akka-cluster/src/main/resources/reference.conf b/akka-cluster/src/main/resources/reference.conf index 9be9210347..8dfcb415ea 100644 --- a/akka-cluster/src/main/resources/reference.conf +++ b/akka-cluster/src/main/resources/reference.conf @@ -148,7 +148,7 @@ akka { # After the heartbeat request has been sent the first failure detection # will start after this period, even though no heartbeat mesage has # been received. - expected-response-after = 3 s + expected-response-after = 5 s # Cleanup of obsolete heartbeat requests time-to-live = 60 s diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala index d6a49e92e6..b2260075da 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala @@ -145,7 +145,9 @@ private[cluster] final class ClusterHeartbeatSender extends Actor with ActorLogg } def reset(snapshot: CurrentClusterState): Unit = - state = state.reset(snapshot.members.map(_.address)(collection.breakOut)) + state = state.reset(snapshot.members.collect { + case m if m.status == MemberStatus.Up ⇒ m.address + }(collection.breakOut)) def addMember(m: Member): Unit = if (m.address != selfAddress) state = state addMember m.address @@ -178,7 +180,7 @@ private[cluster] final class ClusterHeartbeatSender extends Actor with ActorLogg } def triggerFirstHeartbeat(address: Address): Unit = - if (!cluster.failureDetector.isMonitoring(address)) { + if (!cluster.failureDetector.isMonitoring(address) && state.ring.mySenders.contains(address)) { logInfo("Trigger extra expected heartbeat from [{}]", address) cluster.failureDetector.heartbeat(address) } diff --git a/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala b/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala index 936aa90424..7c41ebed19 100644 --- a/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala @@ -33,7 +33,7 @@ class ClusterConfigSpec extends AkkaSpec { HeartbeatInterval must be(1 second) MonitoredByNrOfMembers must be(5) HeartbeatRequestDelay must be(10 seconds) - HeartbeatExpectedResponseAfter must be(3 seconds) + HeartbeatExpectedResponseAfter must be(5 seconds) HeartbeatRequestTimeToLive must be(1 minute) LeaderActionsInterval must be(1 second) UnreachableNodesReaperInterval must be(1 second)