stateIs0/lu-raft-kv

选举Leader细节问题

Opened this issue · 1 comments

选举Leader的一个需求是 candidate 请求投票时,如果有超过半数的响应为 success,就获选leader。

但这处代码的实现是:通过 CountDownLatch(size)阻塞实现,且是在全部都响应了才开始判断。

而且这部分的异步任务处理 分提交和检测完成两次,觉得写的有点繁琐。个人觉得可使用一个ExecutorCompletionService,写起来更清晰,同时在每次take后检测是否有超过半数的成功响应。

CountDownLatch latch_1 = new CountDownLatch(futureArrayList.size() / 2);
把全部 改为 一半 怎么样?