Kaynağa Gözat

Fix a panic in select_all().

When all votes have returned but a lot of the results are error, we
may not count enough votes nor enough against votes.
Jing Yang 5 yıl önce
ebeveyn
işleme
bf6a060919
1 değiştirilmiş dosya ile 4 ekleme ve 1 silme
  1. 4 1
      src/lib.rs

+ 4 - 1
src/lib.rs

@@ -490,7 +490,10 @@ impl Raft {
         let mut against_count = 0;
         let mut cancel_token = cancel_token;
         let mut futures_vec = votes;
-        while vote_count < majority && against_count <= majority {
+        while vote_count < majority
+            && against_count <= majority
+            && !futures_vec.is_empty()
+        {
             // Mixing tokio futures with futures-rs ones. Fingers crossed.
             let selected = futures::future::select(
                 cancel_token,