From 846b8543fbe8658ec8aaed438cdaf979abed6a16 Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Thu, 16 Aug 2012 10:08:07 +0200 Subject: [PATCH] Make SeenChanged internal api, see #2202 --- .../src/main/scala/akka/cluster/Cluster.scala | 6 +++--- .../main/scala/akka/cluster/ClusterDaemon.scala | 14 +++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala index 66a778af9d..d42c9306a6 100644 --- a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala +++ b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala @@ -176,11 +176,11 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector) override def postStop(): Unit = unsubscribe(self) def receive = { - case s: CurrentClusterState ⇒ state = s + case SeenChanged(convergence, seenBy) ⇒ state = state.copy(convergence = convergence, seenBy = seenBy) case MembersChanged(members) ⇒ state = state.copy(members = members) case UnreachableMembersChanged(unreachable) ⇒ state = state.copy(unreachable = unreachable) - case LeaderChanged(leader) ⇒ state = state.copy(leader = leader) - case SeenChanged(convergence, seenBy) ⇒ state = state.copy(convergence = convergence, seenBy = seenBy) + case LeaderChanged(leader, convergence) ⇒ state = state.copy(leader = leader, convergence = convergence) + case s: CurrentClusterState ⇒ state = s case CurrentInternalStats(stats) ⇒ _latestStats = stats case _ ⇒ // ignore, not interesting } diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala index 2039d8d157..5b3b977d90 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala @@ -846,8 +846,8 @@ private[cluster] final class ClusterCoreDaemon(environment: ClusterEnvironment) } def publishLeader(oldGossip: Gossip): Unit = { - if (latestGossip.leader != oldGossip.leader) - eventStream publish LeaderChanged(latestGossip.leader) + if (latestGossip.leader != oldGossip.leader || latestGossip.convergence != oldGossip.convergence) + eventStream publish LeaderChanged(latestGossip.leader, latestGossip.convergence) } def publishSeen(oldGossip: Gossip): Unit = { @@ -919,11 +919,15 @@ object ClusterEvent { case class UnreachableMembersChanged(unreachable: Set[Member]) extends ClusterDomainEvent /** + * Leader of the cluster members changed, and/or convergence status. + */ + case class LeaderChanged(leader: Option[Address], convergence: Boolean) extends ClusterDomainEvent + + /** + * INTERNAL API * The nodes that have seen current version of the Gossip. */ - case class SeenChanged(convergence: Boolean, seenBy: Set[Address]) extends ClusterDomainEvent - - case class LeaderChanged(leader: Option[Address]) extends ClusterDomainEvent + private[cluster] case class SeenChanged(convergence: Boolean, seenBy: Set[Address]) extends ClusterDomainEvent /** * INTERNAL API