From e44f00950d144590e0d30ef892e7b8e800dcbb06 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 3 Apr 2023 12:55:44 +0200 Subject: [PATCH] Improve Candidate.votingPeers Use ImmutableList to ensure the list is never modified. This also improves overhead/performance slightly. Change-Id: Iad491da0e446da0a07e96067846c2c57c0dcfb9a Signed-off-by: Robert Varga --- .../cluster/raft/behaviors/Candidate.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java index 569f6b3d24..77f7a06c49 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Candidate.java @@ -9,8 +9,7 @@ package org.opendaylight.controller.cluster.raft.behaviors; import akka.actor.ActorRef; import akka.actor.ActorSelection; -import java.util.ArrayList; -import java.util.Collection; +import com.google.common.collect.ImmutableList; import org.opendaylight.controller.cluster.raft.PeerInfo; import org.opendaylight.controller.cluster.raft.RaftActorContext; import org.opendaylight.controller.cluster.raft.RaftState; @@ -44,21 +43,18 @@ import scala.concurrent.duration.FiniteDuration; * */ public final class Candidate extends AbstractRaftActorBehavior { - - private int voteCount; - + private final ImmutableList votingPeers; private final int votesRequired; - private final Collection votingPeers = new ArrayList<>(); + private int voteCount; public Candidate(final RaftActorContext context) { super(context, RaftState.Candidate); - for (PeerInfo peer: context.getPeers()) { - if (peer.isVoting()) { - votingPeers.add(peer.getId()); - } - } + votingPeers = context.getPeers().stream() + .filter(PeerInfo::isVoting) + .map(PeerInfo::getId) + .collect(ImmutableList.toImmutableList()); log.debug("{}: Election: Candidate has following voting peers: {}", logName(), votingPeers); @@ -157,9 +153,7 @@ public final class Candidate extends AbstractRaftActorBehavior { return this; } - if (message instanceof RaftRPC) { - - RaftRPC rpc = (RaftRPC) message; + if (message instanceof RaftRPC rpc) { log.debug("{}: RaftRPC message received {}, my term is {}", logName(), rpc, context.getTermInformation().getCurrentTerm()); -- 2.36.6