Bug 6540: EOS - Rework behavior of onPeerDown
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / behaviors / PreLeader.java
index e3ae4f427ac362c4859f22a40cda707b6145944a..eab3f7d7da1d49feb57f71b801b4cbe6b4362d2a 100644 (file)
@@ -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;
     }
 }