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%2FAbstractRaftActorBehavior.java;h=8cb011f7a71d1b54b76bba86a261612f4f555bb0;hb=refs%2Fchanges%2F18%2F28718%2F6;hp=787bd74629b0c643400e49deb32a40468c52e50a;hpb=3fda1a923defdbf18849c6080c3aa19f1ebf2c5f;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractRaftActorBehavior.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractRaftActorBehavior.java index 787bd74629..8cb011f7a7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractRaftActorBehavior.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractRaftActorBehavior.java @@ -10,6 +10,7 @@ package org.opendaylight.controller.cluster.raft.behaviors; import akka.actor.ActorRef; import akka.actor.Cancellable; +import java.util.Map; import java.util.Random; import java.util.concurrent.TimeUnit; import org.opendaylight.controller.cluster.raft.ClientRequestTracker; @@ -492,14 +493,19 @@ public abstract class AbstractRaftActorBehavior implements RaftActorBehavior { } public void applyServerConfiguration(ServerConfigurationPayload serverConfig) { - for(String peerId: context.getPeerAddresses().keySet()) { - context.removePeer(peerId); - } - + Map currentPeers = context.getPeerAddresses(); for(String peerId: serverConfig.getNewServerConfig()) { if(!getId().equals(peerId)) { - context.addToPeers(peerId, null); + if(!currentPeers.containsKey(peerId)) { + context.addToPeers(peerId, null); + } else { + currentPeers.remove(peerId); + } } } + + for(String peerIdToRemove: currentPeers.keySet()) { + context.removePeer(peerIdToRemove); + } } }