true,IsLeader && LeaderReady; false, !IsLeader
()
| 563 | * false, !IsLeader |
| 564 | */ |
| 565 | boolean waitLeaderReady() { |
| 566 | lock(); |
| 567 | try { |
| 568 | var volatileTmp = leaderReadyFuture; // 每次只等待一轮的选举,不考虑中间Leader发生变化。 |
| 569 | while (isLeader()) { |
| 570 | if (volatileTmp.isDone()) |
| 571 | return volatileTmp.get(); |
| 572 | await(); |
| 573 | } |
| 574 | } finally { |
| 575 | unlock(); |
| 576 | } |
| 577 | return false; |
| 578 | } |
| 579 | |
| 580 | public boolean isReadyLeader() { |
| 581 | lock(); |