Bug 6540: EOS - Prune pending owner change commits on leader change
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / entityownership / EntityOwnershipShard.java
index f1e898ae23042d9da345032d156ea54cfd7b504b..99ef94ef5039ba9e39a14afe7bf59f73af59b608 100644 (file)
@@ -322,8 +322,6 @@ class EntityOwnershipShard extends Shard {
 
     @Override
     protected void onStateChanged() {
-        super.onStateChanged();
-
         boolean isLeader = isLeader();
         LOG.debug("{}: onStateChanged: isLeader: {}, hasLeader: {}", persistenceId(), isLeader, hasLeader());
 
@@ -337,12 +335,12 @@ class EntityOwnershipShard extends Shard {
         }
 
         commitCoordinator.onStateChanged(this, isLeader);
+
+        super.onStateChanged();
     }
 
     @Override
     protected void onLeaderChanged(String oldLeader, String newLeader) {
-        super.onLeaderChanged(oldLeader, newLeader);
-
         boolean isLeader = isLeader();
         LOG.debug("{}: onLeaderChanged: oldLeader: {}, newLeader: {}, isLeader: {}", persistenceId(), oldLeader,
                 newLeader, isLeader);
@@ -366,6 +364,8 @@ class EntityOwnershipShard extends Shard {
             // leader and stays in the follower state. In that case no behavior state change occurs.
             commitCoordinator.onStateChanged(this, isLeader);
         }
+
+        super.onLeaderChanged(oldLeader, newLeader);
     }
 
     private void onCandidateRemoved(CandidateRemoved message) {
@@ -373,10 +373,8 @@ class EntityOwnershipShard extends Shard {
 
         if(isLeader()) {
             String currentOwner = getCurrentOwner(message.getEntityPath());
-            if(message.getRemovedCandidate().equals(currentOwner) || message.getRemainingCandidates().isEmpty()){
-                writeNewOwner(message.getEntityPath(),
-                        newOwner(currentOwner, message.getRemainingCandidates(), getEntityOwnerElectionStrategy(message.getEntityPath())));
-            }
+            writeNewOwner(message.getEntityPath(),
+                    newOwner(currentOwner, message.getRemainingCandidates(), getEntityOwnerElectionStrategy(message.getEntityPath())));
         }
     }