From cc1228739b18b9c8aa18b05bf3ba086b9e439270 Mon Sep 17 00:00:00 2001
From: Yaroslav Dynnikov <yaroslav.dynnikov@gmail.com>
Date: Wed, 9 Nov 2022 15:28:57 +0300
Subject: [PATCH] fix: potential panic in postjoin

No assumptions should be made on `traft::node::Status.leader_id`. It can
be set to `None` at any time due to a re-election.
---
 src/main.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main.rs b/src/main.rs
index dbea1fbb60..1a69af698e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -953,7 +953,7 @@ fn postjoin(args: &args::Run, storage: Storage) {
             .with_target_grade(TargetGrade::Online)
             .with_failure_domain(args.failure_domain());
 
-        let leader_id = node.status().leader_id.expect("leader_id deinitialized");
+        let leader_id = unwrap_some_or!(node.status().leader_id, continue);
         let leader = storage.peers.get(&leader_id).unwrap();
 
         // It's necessary to call `proc_update_peer` remotely on a
-- 
GitLab