From d403725f43ba7073af8ee4aa162a5ab5f1aff549 Mon Sep 17 00:00:00 2001 From: Leon Hartley Date: Mon, 5 Feb 2024 10:24:59 +0000 Subject: [PATCH] change `cluster_up` bool to check state instead --- coerce/src/remote/cluster/singleton/manager/mod.rs | 12 +++++++----- .../src/remote/cluster/singleton/manager/status.rs | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/coerce/src/remote/cluster/singleton/manager/mod.rs b/coerce/src/remote/cluster/singleton/manager/mod.rs index 321f4f1..87f5b89 100644 --- a/coerce/src/remote/cluster/singleton/manager/mod.rs +++ b/coerce/src/remote/cluster/singleton/manager/mod.rs @@ -123,6 +123,10 @@ impl State { matches!(self, Self::Running { .. } | Self::Starting { .. }) } + pub fn is_joining(&self) -> bool { + matches!(self, Self::Joining { .. }) + } + pub fn get_actor(&self) -> Option> { match &self { Self::Running { actor_ref } | Self::Stopping { actor_ref, .. } => { @@ -311,11 +315,9 @@ impl Handler> for Manager { } ClusterEvent::LeaderChanged(leader) => { - if !self.cluster_up { - return; + if !self.state.is_joining() { + self.on_leader_changed(*leader, ctx).await; } - - self.on_leader_changed(*leader, ctx).await; } ClusterEvent::NodeAdded(node) => { @@ -336,7 +338,7 @@ impl Handler> for Manager { ClusterEvent::NodeRemoved(node) => { self.managers.remove(&node.id); - if self.cluster_up { + if !self.state.is_joining() { if let State::Starting { acknowledged_nodes } = &mut self.state { acknowledged_nodes.remove(&node.id); diff --git a/coerce/src/remote/cluster/singleton/manager/status.rs b/coerce/src/remote/cluster/singleton/manager/status.rs index a9b79b9..d160a5a 100644 --- a/coerce/src/remote/cluster/singleton/manager/status.rs +++ b/coerce/src/remote/cluster/singleton/manager/status.rs @@ -33,7 +33,7 @@ impl Handler for Manager { ); let singleton_state = match &self.state { - State::Joining {..} => SingletonState::Joining, + State::Joining { .. } => SingletonState::Joining, State::Idle => SingletonState::Idle, State::Starting { .. } => SingletonState::Starting, State::Running { .. } => SingletonState::Running,