From 387c19a06cbcde2e258a2f8b6338898a8bc3ba74 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E4=BD=95=E8=BF=90=E6=B3=A210202176?= Date: Mon, 15 Jan 2018 09:32:32 +0800 Subject: [PATCH] Fix the inner order of switchBehavior in RaftAcotr updateAndPersist should be called before switchBehavior. Otherwise, when the EntityOwnershipShard trigger a new write transaction in onLeaderChanged base on last term, It will lead to fail in this transaction because of the term value is inconsistent between AppendEntries and AppendEntriesReply Change-Id: I9118f7ec283f23e02dc285ccf6a3fbbce47dc508 Signed-off-by: HeYunBo --- .../org/opendaylight/controller/cluster/raft/RaftActor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java 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 old mode 100644 new mode 100755 index 744ed9696b..967a8fb9b3 --- 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 @@ -421,9 +421,9 @@ public abstract class RaftActor extends AbstractUntypedPersistentActor { if (!getRaftActorContext().getRaftPolicy().automaticElectionsEnabled()) { RaftState newState = message.getNewState(); if (newState == RaftState.Leader || newState == RaftState.Follower) { + getRaftActorContext().getTermInformation().updateAndPersist(message.getNewTerm(), ""); switchBehavior(behaviorStateTracker.capture(getCurrentBehavior()), AbstractRaftActorBehavior.createBehavior(context, message.getNewState())); - getRaftActorContext().getTermInformation().updateAndPersist(message.getNewTerm(), ""); } else { LOG.warn("Switching to behavior : {} - not supported", newState); } -- 2.36.6