From c991e1db53decec2654f002bef56555a9e5f66d5 Mon Sep 17 00:00:00 2001
From: Yaroslav Dynnikov <yaroslav.dynnikov@gmail.com>
Date: Fri, 1 Jul 2022 15:13:34 +0300
Subject: [PATCH] fix: cluster deployment

Joint state latch was mistakenly dropped, and conf_change_loop couldn't
receive a notification.

Also assert it's not overridden by mistake.
---
 src/traft/node.rs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/traft/node.rs b/src/traft/node.rs
index 375a892ff1..f746454c03 100644
--- a/src/traft/node.rs
+++ b/src/traft/node.rs
@@ -429,8 +429,8 @@ fn handle_committed_normal_entry(
             let e = RaftError::ConfChangeError("rolled back".into());
 
             latch.notify.notify_err(e);
+            *joint_state_latch = None;
         }
-        *joint_state_latch = None;
     }
 }
 
@@ -710,6 +710,8 @@ fn raft_main_loop(
                         let last_index = raw_node.raft.raft_log.last_index();
                         assert_eq!(last_index, prev_index + 1);
 
+                        assert!(joint_state_latch.is_none());
+
                         joint_state_latch = Some(JointStateLatch {
                             index: last_index,
                             notify,
-- 
GitLab