synchronized void awaitState() throws InterruptedException { while ( raftMachine.state().appendIndex() < 0 ) { wait(); } } }
private Evaluator( RaftMachine raft, CompletableFuture<Boolean> catchUpFuture, Supplier<DatabaseHealth> dbHealthSupplier ) { this.raft = raft; this.catchUpFuture = catchUpFuture; this.lastLeaderCommit = raft.state().leaderCommit(); this.dbHealthSupplier = dbHealthSupplier; }
LeaderIdReusabilityCondition( CommandIndexTracker commandIndexTracker, RaftMachine raftMachine ) { this.commandIndexTracker = commandIndexTracker; // Get highest command id seen this.commandIdWhenBecameLeader = raftMachine.state().lastLogIndexBeforeWeBecameLeader(); }
private boolean iAmAVotingMember() { Set votingMembers = raft.state().votingMembers(); boolean votingMember = votingMembers.contains( myself ); if ( !votingMember ) { log.debug( "I (%s) am not a voting member: [%s]", myself, votingMembers ); } return votingMember; }
private boolean caughtUpWithLeader() { boolean caughtUpWithLeader = false; ExposedRaftState state = raft.state(); long localCommit = state.commitIndex(); lastLeaderCommit = state.leaderCommit(); if ( lastLeaderCommit != -1 ) { caughtUpWithLeader = localCommit == lastLeaderCommit; long gap = lastLeaderCommit - localCommit; log.info( "%s Catchup: %d => %d (%d behind)", myself, localCommit, lastLeaderCommit, gap ); } else { log.info( "Leader commit unknown" ); } return caughtUpWithLeader; } }