Просмотр исходного кода

Revert "raft: remove redundant code"

This reverts commit b64f3f379d73f48c68b669572330e3986e258542.
Dastan-glitch 4 лет назад
Родитель
Сommit
f98063fa73
1 измененных файлов с 9 добавлено и 8 удалено
  1. 9 8
      src/raft/consensus.rs

+ 9 - 8
src/raft/consensus.rs

@@ -204,11 +204,11 @@ impl<T: Decodable + Encodable + Clone> Raft<T> {
 
                 select! {
                     m =  p2p_recv_channel.recv().fuse() => result = self.handle_method(m?).await,
-                    m =  broadcast_msg_rv.recv().fuse() => result = self.broadcast_msg(&m?, None).await,
+                    m =  broadcast_msg_rv.recv().fuse() => result = self.broadcast_msg(&m?,None).await,
                     _ = task::sleep(timeout).fuse() => {
                         result = if self.role == Role::Leader {
                             self.send_heartbeat().await
-                        } else {
+                        }else {
                             self.send_vote_request().await
                         };
                     },
@@ -408,13 +408,14 @@ impl<T: Decodable + Encodable + Clone> Raft<T> {
     }
 
     async fn send_heartbeat(&self) -> Result<()> {
-        let nodes = self.nodes.lock().await;
-        let nodes_cloned = nodes.clone();
-        drop(nodes);
-        for node in nodes_cloned.iter() {
-            self.update_logs(node.0).await?;
+        if self.role == Role::Leader {
+            let nodes = self.nodes.lock().await;
+            let nodes_cloned = nodes.clone();
+            drop(nodes);
+            for node in nodes_cloned.iter() {
+                self.update_logs(node.0).await?;
+            }
         }
-
         Ok(())
     }