Преглед изворни кода

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

Jing Yang пре 4 година
родитељ
комит
805fca48b3
1 измењених фајлова са 13 додато и 1 уклоњено
  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 {