- @Override
- public RaftState handleMessage(ActorRef sender, Object message) {
- RaftState raftState = state();
- if (message instanceof RaftRPC) {
- raftState = applyTerm((RaftRPC) message);
- }
- if (message instanceof AppendEntries) {
- AppendEntries appendEntries = (AppendEntries) message;
- if (appendEntries.getLeaderCommit() > context.getLastApplied()) {
- applyLogToStateMachine(appendEntries.getLeaderCommit());
- }
- raftState = handleAppendEntries(sender, appendEntries, raftState);
- } else if (message instanceof AppendEntriesReply) {
- raftState =
- handleAppendEntriesReply(sender, (AppendEntriesReply) message,
- raftState);
- } else if (message instanceof RequestVote) {
- raftState =
- handleRequestVote(sender, (RequestVote) message, raftState);
- } else if (message instanceof RequestVoteReply) {
- raftState =
- handleRequestVoteReply(sender, (RequestVoteReply) message,
- raftState);
+ /**
+ * Find the log index from the previous to last entry in the log
+ *
+ * @return
+ */
+ protected long prevLogIndex(long index){
+ ReplicatedLogEntry prevEntry =
+ context.getReplicatedLog().get(index - 1);
+ if (prevEntry != null) {
+ return prevEntry.getIndex();