瀏覽代碼

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 年之前
父節點
當前提交
bf6a060919
共有 1 個文件被更改,包括 4 次插入1 次删除
  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,