X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FRaftActor.java;h=27e8f34d327dd5ebe9e1b1ca8a9d8e6ea1b6ceba;hp=0a979d24eef2a26d60cb6168c18d84815037cf18;hb=c675288c3ebd727fc72013e899183995c3fa9be7;hpb=ee146664ac8ae45439c14a84fe769633c3ebf847 diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java index 0a979d24ee..27e8f34d32 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java @@ -168,8 +168,7 @@ public abstract class RaftActor extends UntypedPersistentActor { } else if (message instanceof FindLeader) { getSender().tell( - new FindLeaderReply( - context.getPeerAddress(currentBehavior.getLeaderId())), + new FindLeaderReply(getLeaderAddress()), getSelf() ); @@ -183,12 +182,6 @@ public abstract class RaftActor extends UntypedPersistentActor { // TODO: Handle failure in saving the snapshot - } else if (message instanceof FindLeader){ - - getSender().tell(new FindLeaderReply( - context.getPeerAddress(currentBehavior.getLeaderId())), - getSelf()); - } else if (message instanceof AddRaftPeer){ // FIXME : Do not add raft peers like this. @@ -269,18 +262,13 @@ public abstract class RaftActor extends UntypedPersistentActor { * @return A reference to the leader if known, null otherwise */ protected ActorSelection getLeader(){ - String leaderId = currentBehavior.getLeaderId(); - if (leaderId == null) { - return null; - } - String peerAddress = context.getPeerAddress(leaderId); - LOG.debug("getLeader leaderId = " + leaderId + " peerAddress = " - + peerAddress); + String leaderAddress = getLeaderAddress(); - if(peerAddress == null){ + if(leaderAddress == null){ return null; } - return context.actorSelection(peerAddress); + + return context.actorSelection(leaderAddress); } /** @@ -295,6 +283,22 @@ public abstract class RaftActor extends UntypedPersistentActor { return currentBehavior.state(); } + protected ReplicatedLogEntry getLastLogEntry() { + return replicatedLog.last(); + } + + protected Long getCurrentTerm(){ + return context.getTermInformation().getCurrentTerm(); + } + + protected Long getCommitIndex(){ + return context.getCommitIndex(); + } + + protected Long getLastApplied(){ + return context.getLastApplied(); + } + /** * setPeerAddress sets the address of a known peer at a later time. *

@@ -408,6 +412,21 @@ public abstract class RaftActor extends UntypedPersistentActor { deleteMessages(sequenceNumber); } + private String getLeaderAddress(){ + if(isLeader()){ + return getSelf().path().toString(); + } + String leaderId = currentBehavior.getLeaderId(); + if (leaderId == null) { + return null; + } + String peerAddress = context.getPeerAddress(leaderId); + LOG.debug("getLeaderAddress leaderId = " + leaderId + " peerAddress = " + + peerAddress); + + return peerAddress; + } + private class ReplicatedLogImpl extends AbstractReplicatedLogImpl { @@ -602,7 +621,7 @@ public abstract class RaftActor extends UntypedPersistentActor { } @Override public void update(long currentTerm, String votedFor) { - LOG.info("Set currentTerm={}, votedFor={}", currentTerm, votedFor); + LOG.debug("Set currentTerm={}, votedFor={}", currentTerm, votedFor); this.currentTerm = currentTerm; this.votedFor = votedFor;