X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FRaftActorServerConfigurationSupport.java;h=004272192c393b2e9267f6175312bb59bb71fdb4;hb=HEAD;hp=3a3511668c4bb82c7c216b56b5a89aa356521375;hpb=29c8203015aa8f2891c305e82f0cf70c3de3f281;p=controller.git 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 3a3511668c..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 @@ -7,19 +7,19 @@ */ package org.opendaylight.controller.cluster.raft; +import static java.util.Objects.requireNonNull; + import akka.actor.ActorRef; import akka.actor.ActorSelection; import akka.actor.Cancellable; -import com.google.common.base.Preconditions; +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; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; import org.opendaylight.controller.cluster.raft.base.messages.SnapshotComplete; import org.opendaylight.controller.cluster.raft.base.messages.TimeoutNow; @@ -27,6 +27,7 @@ import org.opendaylight.controller.cluster.raft.behaviors.AbstractLeader; import org.opendaylight.controller.cluster.raft.messages.AddServer; import org.opendaylight.controller.cluster.raft.messages.AddServerReply; import org.opendaylight.controller.cluster.raft.messages.ChangeServersVotingStatus; +import org.opendaylight.controller.cluster.raft.messages.Payload; import org.opendaylight.controller.cluster.raft.messages.RemoveServer; import org.opendaylight.controller.cluster.raft.messages.RemoveServerReply; import org.opendaylight.controller.cluster.raft.messages.ServerChangeReply; @@ -35,7 +36,6 @@ import org.opendaylight.controller.cluster.raft.messages.ServerRemoved; import org.opendaylight.controller.cluster.raft.messages.UnInitializedFollowerSnapshotReply; import org.opendaylight.controller.cluster.raft.persisted.ServerConfigurationPayload; import org.opendaylight.controller.cluster.raft.persisted.ServerInfo; -import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; import org.opendaylight.yangtools.concepts.Identifier; import org.opendaylight.yangtools.util.AbstractUUIDIdentifier; import org.slf4j.Logger; @@ -63,27 +63,27 @@ class RaftActorServerConfigurationSupport { RaftActorServerConfigurationSupport(final RaftActor raftActor) { this.raftActor = raftActor; - this.raftContext = raftActor.getRaftActorContext(); + raftContext = raftActor.getRaftActorContext(); } boolean handleMessage(final Object message, final ActorRef sender) { - if (message instanceof AddServer) { - onAddServer((AddServer) message, sender); + if (message instanceof AddServer addServer) { + onAddServer(addServer, sender); return true; - } else if (message instanceof RemoveServer) { - onRemoveServer((RemoveServer) message, sender); + } else if (message instanceof RemoveServer removeServer) { + onRemoveServer(removeServer, sender); return true; - } else if (message instanceof ChangeServersVotingStatus) { - onChangeServersVotingStatus((ChangeServersVotingStatus) message, sender); + } else if (message instanceof ChangeServersVotingStatus changeServersVotingStatus) { + onChangeServersVotingStatus(changeServersVotingStatus, sender); return true; - } else if (message instanceof ServerOperationTimeout) { - currentOperationState.onServerOperationTimeout((ServerOperationTimeout) message); + } else if (message instanceof ServerOperationTimeout serverOperationTimeout) { + currentOperationState.onServerOperationTimeout(serverOperationTimeout); return true; - } else if (message instanceof UnInitializedFollowerSnapshotReply) { - currentOperationState.onUnInitializedFollowerSnapshotReply((UnInitializedFollowerSnapshotReply) message); + } else if (message instanceof UnInitializedFollowerSnapshotReply uninitFollowerSnapshotReply) { + currentOperationState.onUnInitializedFollowerSnapshotReply(uninitFollowerSnapshotReply); return true; - } else if (message instanceof ApplyState) { - return onApplyState((ApplyState) message); + } else if (message instanceof ApplyState applyState) { + return onApplyState(applyState); } else if (message instanceof SnapshotComplete) { currentOperationState.onSnapshotComplete(); return false; @@ -247,7 +247,7 @@ class RaftActorServerConfigurationSupport { } protected void operationComplete(final ServerOperationContext operationContext, - @Nullable final ServerChangeStatus replyStatus) { + final @Nullable ServerChangeStatus replyStatus) { if (replyStatus != null) { sendReply(operationContext, replyStatus); } @@ -453,7 +453,7 @@ class RaftActorServerConfigurationSupport { InstallingSnapshot(final AddServerContext addServerContext, final Cancellable installSnapshotTimer) { super(addServerContext); - this.installSnapshotTimer = Preconditions.checkNotNull(installSnapshotTimer); + this.installSnapshotTimer = requireNonNull(installSnapshotTimer); } @Override @@ -497,7 +497,7 @@ class RaftActorServerConfigurationSupport { WaitingForPriorSnapshotComplete(final AddServerContext addServerContext, final Cancellable snapshotTimer) { super(addServerContext); - this.snapshotTimer = Preconditions.checkNotNull(snapshotTimer); + this.snapshotTimer = requireNonNull(snapshotTimer); } @Override @@ -609,7 +609,7 @@ class RaftActorServerConfigurationSupport { private final RemoveServerContext removeServerContext; protected RemoveServerState(final RemoveServerContext removeServerContext) { - this.removeServerContext = Preconditions.checkNotNull(removeServerContext); + this.removeServerContext = requireNonNull(removeServerContext); } @@ -747,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; @@ -764,28 +764,28 @@ class RaftActorServerConfigurationSupport { } raftContext.updatePeerIds(new ServerConfigurationPayload(newServerInfoList)); - if (raftActor.getCurrentBehavior() instanceof AbstractLeader) { - AbstractLeader leader = (AbstractLeader) raftActor.getCurrentBehavior(); + if (raftActor.getCurrentBehavior() instanceof AbstractLeader leader) { leader.updateMinReplicaCount(); } 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(); } } @@ -880,7 +880,7 @@ class RaftActorServerConfigurationSupport { private final String loggingContext; ServerOperationTimeout(final String loggingContext) { - this.loggingContext = Preconditions.checkNotNull(loggingContext, "loggingContext should not be null"); + this.loggingContext = requireNonNull(loggingContext, "loggingContext should not be null"); } String getLoggingContext() {