X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fbehaviors%2FLeader.java;h=b941cfcc9f5b93374c763a9eeaf207998120dedb;hb=a605375505d33b6cc12e766d839fd8bccf8bb69b;hp=c76798f3b276c602c3a0190f8749f3e1aca4de89;hpb=a615daaacf68376104e89e31b6e40f6636bb2a1e;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java index c76798f3b2..b941cfcc9f 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java @@ -20,7 +20,6 @@ import org.opendaylight.controller.cluster.raft.RaftActorContext; import org.opendaylight.controller.cluster.raft.RaftActorLeadershipTransferCohort; import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.cluster.raft.base.messages.ElectionTimeout; -import org.opendaylight.controller.cluster.raft.base.messages.IsolatedLeaderCheck; import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; /** @@ -46,7 +45,13 @@ import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; * set commitIndex = N (§5.3, §5.4). */ public class Leader extends AbstractLeader { - private static final IsolatedLeaderCheck ISOLATED_LEADER_CHECK = new IsolatedLeaderCheck(); + /** + * Internal message sent to periodically check if this leader has become isolated and should transition + * to {@link IsolatedLeader}. + */ + @VisibleForTesting + static final Object ISOLATED_LEADER_CHECK = new Object(); + private final Stopwatch isolatedLeaderCheck; private @Nullable LeadershipTransferContext leadershipTransferContext; @@ -58,7 +63,7 @@ public class Leader extends AbstractLeader { @Override public RaftActorBehavior handleMessage(ActorRef sender, Object originalMessage) { Preconditions.checkNotNull(sender, "sender should not be null"); - if (originalMessage instanceof IsolatedLeaderCheck) { + if (ISOLATED_LEADER_CHECK.equals(originalMessage)) { if (isLeaderIsolated()) { LOG.warn("{}: At least {} followers need to be active, Switching {} from Leader to IsolatedLeader", context.getId(), getMinIsolatedLeaderPeerCount(), leaderId); @@ -143,7 +148,7 @@ public class Leader extends AbstractLeader { // Now send an ElectionTimeout to the matching follower to immediately start an election. ActorSelection followerActor = context.getPeerActorSelection(followerId); - followerActor.tell(new ElectionTimeout(), context.getActor()); + followerActor.tell(ElectionTimeout.INSTANCE, context.getActor()); LOG.debug("{}: Leader transfer complete", logName());