From 72fb629bbd2bc1c5b4049f28e7c669208b634479 Mon Sep 17 00:00:00 2001
From: Georgy Moshkin <gmoshkin@picodata.io>
Date: Wed, 14 Dec 2022 10:49:53 +0300
Subject: [PATCH] refactor(governor): Option::<Plan>::None -> Plan::None

---
 src/governor/mod.rs | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/governor/mod.rs b/src/governor/mod.rs
index 458f2bbb80..8e07b31b6f 100644
--- a/src/governor/mod.rs
+++ b/src/governor/mod.rs
@@ -83,7 +83,7 @@ impl Loop {
                 return Continue;
             }
         );
-        if let Some(Plan::ConfChange(conf_change)) = plan {
+        if let Plan::ConfChange(conf_change) = plan {
             // main_loop gives the warranty that every ProposeConfChange
             // will sometimes be handled and there's no need in timeout.
             // It also guarantees that the notification will arrive only
@@ -95,13 +95,13 @@ impl Loop {
             }
             return Continue;
         }
-        if let Some(Plan::TransferLeadership(TransferLeadership { to })) = plan {
+        if let Plan::TransferLeadership(TransferLeadership { to }) = plan {
             tlog!(Info, "transferring leadership to {}", to.instance_id);
             node.transfer_leadership_and_yield(to.raft_id);
             event::wait_timeout(Event::TopologyChanged, Duration::from_secs(1)).unwrap();
             return Continue;
         }
-        if let Some(Plan::TransferMastership(TransferMastership { to })) = plan {
+        if let Plan::TransferMastership(TransferMastership { to }) = plan {
             #[rustfmt::skip]
             let Instance { instance_id, replicaset_id, .. } = to;
             tlog!(Info, "transferring replicaset mastership to {instance_id}");
@@ -687,9 +687,9 @@ fn action_plan<'i>(
     my_raft_id: RaftId,
     storage: &Clusterwide,
     raft_storage: &RaftSpaceAccess,
-) -> Result<Option<Plan<'i>>> {
+) -> Result<Plan<'i>> {
     if let Some(conf_change) = raft_conf_change(instances, voters, learners) {
-        return Ok(Some(Plan::ConfChange(conf_change)));
+        return Ok(Plan::ConfChange(conf_change));
     }
 
     let to_offline = instances
@@ -712,9 +712,9 @@ fn action_plan<'i>(
                 // FIXME: linear search
                 .find(|instance| voters.contains(&instance.raft_id));
             if let Some(new_leader) = new_leader {
-                return Ok(Some(Plan::TransferLeadership(TransferLeadership {
+                return Ok(Plan::TransferLeadership(TransferLeadership {
                     to: new_leader,
-                })));
+                }));
             }
         } else {
             tlog!(Warning, "leader is going offline and no substitution is found";
@@ -734,9 +734,9 @@ fn action_plan<'i>(
         if matches!(replicaset, Some(replicaset) if replicaset.master_id == instance_id) {
             let new_master = maybe_responding(instances).find(|p| p.replicaset_id == replicaset_id);
             if let Some(new_master) = new_master {
-                return Ok(Some(Plan::TransferMastership(TransferMastership {
+                return Ok(Plan::TransferMastership(TransferMastership {
                     to: new_master,
-                })));
+                }));
             };
         } else {
             tlog!(Warning, "replicaset master is going offline and no substitution is found";
@@ -746,7 +746,7 @@ fn action_plan<'i>(
         }
     }
 
-    Ok(None)
+    Ok(Plan::None)
 }
 
 impl Loop {
@@ -895,6 +895,7 @@ mod actions {
     }
 
     pub enum Plan<'a> {
+        None,
         ConfChange(raft::prelude::ConfChangeV2),
         TransferLeadership(TransferLeadership<'a>),
         TransferMastership(TransferMastership<'a>),
-- 
GitLab