X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FRaftActorServerConfigurationSupport.java;fp=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FRaftActorServerConfigurationSupport.java;h=fd2cd419d77344fc9284d044d089d0ca4cd21489;hp=e663e36bdbe0064dc923d88c18efbea5bef01f0b;hb=973ce8b60215b1a57a8d42c70e522a4925e3ba3a;hpb=3cc63acc3dcb3a16d06b8ab34118382eac59e233 diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupport.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupport.java index e663e36bdb..fd2cd419d7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupport.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupport.java @@ -12,11 +12,10 @@ import static java.util.Objects.requireNonNull; import akka.actor.ActorRef; import akka.actor.ActorSelection; import akka.actor.Cancellable; +import com.google.common.collect.ImmutableList; import java.util.ArrayDeque; -import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Queue; import java.util.UUID; @@ -748,7 +747,7 @@ class RaftActorServerConfigurationSupport { } private boolean updateLocalPeerInfo() { - List newServerInfoList = newServerInfoList(); + final var newServerInfoList = newServerInfoList(); // Check if new voting state would leave us with no voting members. boolean atLeastOneVoting = false; @@ -772,20 +771,21 @@ class RaftActorServerConfigurationSupport { return true; } - private List newServerInfoList() { - Map serverVotingStatusMap = changeVotingStatusContext.getOperation() - .getServerVotingStatusMap(); - List newServerInfoList = new ArrayList<>(); - for (String peerId: raftContext.getPeerIds()) { - newServerInfoList.add(new ServerInfo(peerId, serverVotingStatusMap.containsKey(peerId) - ? serverVotingStatusMap.get(peerId) : raftContext.getPeerInfo(peerId).isVoting())); + private ImmutableList newServerInfoList() { + final var serverVotingStatusMap = changeVotingStatusContext.getOperation().getServerVotingStatusMap(); + final var peerInfos = raftContext.getPeers(); + final var newServerInfoList = ImmutableList.builderWithExpectedSize(peerInfos.size() + 1); + for (var peerInfo : peerInfos) { + final var peerId = peerInfo.getId(); + final var voting = serverVotingStatusMap.get(peerId); + newServerInfoList.add(new ServerInfo(peerId, voting != null ? voting : peerInfo.isVoting())); } - newServerInfoList.add(new ServerInfo(raftContext.getId(), serverVotingStatusMap.containsKey( - raftContext.getId()) ? serverVotingStatusMap.get(raftContext.getId()) - : raftContext.isVotingMember())); + final var myId = raftContext.getId(); + final var myVoting = serverVotingStatusMap.get(myId); + newServerInfoList.add(new ServerInfo(myId, myVoting != null ? myVoting : raftContext.isVotingMember())); - return newServerInfoList; + return newServerInfoList.build(); } }