@@ -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,
+ );
+ set.is_ok()
+ } else {
+ false
+ }
}
};
if start {