Prechádzať zdrojové kódy

Correct is_leader check in append_entries and heartbeat.

Jing Yang 5 rokov pred
rodič
commit
1f41b2dae0
1 zmenil súbory, kde vykonal 4 pridanie a 1 odobranie
  1. 4 1
      src/lib.rs

+ 4 - 1
src/lib.rs

@@ -541,7 +541,7 @@ impl Raft {
     ) -> Option<AppendEntriesArgs> {
         let rf = rf.lock();
 
-        if rf.is_leader() {
+        if !rf.is_leader() {
             return None;
         }
 
@@ -580,6 +580,9 @@ impl Raft {
                 if !this.keep_running.load(Ordering::SeqCst) {
                     break;
                 }
+                if !this.inner_state.lock().is_leader() {
+                    continue;
+                }
                 for (i, rpc_client) in this.peers.iter().enumerate() {
                     if i != this.me.0 && peer.map(|p| p.0 == i).unwrap_or(true)
                     {