Bug 2187: AddServer: check if already exists
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / RaftActorServerConfigurationSupport.java
index 6c8bf14136d21a218181ffe02aa1cedfa3429de1..258287a36ae1a95258b9eb2e258e8d5621c63399 100644 (file)
@@ -321,11 +321,15 @@ class RaftActorServerConfigurationSupport {
         @Override
         public void initiate(RaftActor raftActor) {
             AbstractLeader leader = (AbstractLeader) raftActor.getCurrentBehavior();
-
             AddServer addServer = getAddServerContext().getOperation();
 
             LOG.debug("{}: Initiating {}", raftContext.getId(), addServer);
 
+            if(raftContext.getPeerInfo(addServer.getNewServerId()) != null) {
+                operationComplete(raftActor, getAddServerContext(), ServerChangeStatus.ALREADY_EXISTS);
+                return;
+            }
+
             VotingState votingState = addServer.isVotingMember() ? VotingState.VOTING_NOT_INITIALIZED :
                     VotingState.NON_VOTING;
             raftContext.addToPeers(addServer.getNewServerId(), addServer.getNewServerAddress(), votingState);