瀏覽代碼

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 {