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%2Fbehaviors%2FPreLeader.java;h=eab3f7d7da1d49feb57f71b801b4cbe6b4362d2a;hp=e3ae4f427ac362c4859f22a40cda707b6145944a;hb=8119659681a6814d257314178e759a6ef1b49766;hpb=5636554dc6180c4a6aee6d4423a7f0a1ed30d9e2 diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/PreLeader.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/PreLeader.java index e3ae4f427a..eab3f7d7da 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/PreLeader.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/PreLeader.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.cluster.raft.behaviors; import akka.actor.ActorRef; import org.opendaylight.controller.cluster.raft.RaftActorContext; import org.opendaylight.controller.cluster.raft.RaftState; -import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; +import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; import org.opendaylight.controller.cluster.raft.persisted.NoopPayload; /** @@ -37,14 +37,16 @@ public class PreLeader extends AbstractLeader { } @Override - protected RaftActorBehavior handleAppendEntriesReply(ActorRef sender, AppendEntriesReply appendEntriesReply) { - RaftActorBehavior returnBehavior = super.handleAppendEntriesReply(sender, appendEntriesReply); - - if(context.getCommitIndex() >= context.getReplicatedLog().lastIndex()) { - // We've committed all entries - we can switch to Leader. - returnBehavior = internalSwitchBehavior(new Leader(context, this)); + public RaftActorBehavior handleMessage(ActorRef sender, Object message) { + if (message instanceof ApplyState) { + if(context.getLastApplied() >= context.getReplicatedLog().lastIndex()) { + // We've applied all entries - we can switch to Leader. + return internalSwitchBehavior(new Leader(context, this)); + } else { + return this; + } + } else { + return super.handleMessage(sender, message); } - - return returnBehavior; } }