Bladeren bron

Fix a bug in server where the shared term is not set.

Jing Yang 4 jaren geleden
bovenliggende
commit
805fca48b3
1 gewijzigde bestanden met toevoegingen van 13 en 1 verwijderingen
  1. 13 1
      kvraft/src/server.rs

+ 13 - 1
kvraft/src/server.rs

@@ -242,7 +242,19 @@ impl KVServer {
             ),
             // Somebody has attempted, or is attempting, start().
             Err(prev_term) => {
-                prev_term != Self::ATTEMPTING_TERM && prev_term < hold_term
+                let start =
+                    prev_term != Self::ATTEMPTING_TERM && prev_term < hold_term;
+                if start {
+                    let set = result_holder.term.compare_exchange(
+                        prev_term,
+                        Self::ATTEMPTING_TERM,
+                        Ordering::SeqCst,
+                        Ordering::SeqCst,
+                    );
+                    set.is_ok()
+                } else {
+                    false
+                }
             }
         };
         if start {