Use ImmutableList to ensure the list is never modified. This also
improves overhead/performance slightly.
Change-Id: Iad491da0e446da0a07e96067846c2c57c0dcfb9a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
import akka.actor.ActorRef;
import akka.actor.ActorSelection;
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;
import org.opendaylight.controller.cluster.raft.PeerInfo;
import org.opendaylight.controller.cluster.raft.RaftActorContext;
import org.opendaylight.controller.cluster.raft.RaftState;
* </ul>
*/
public final class Candidate extends AbstractRaftActorBehavior {
* </ul>
*/
public final class Candidate extends AbstractRaftActorBehavior {
-
- private int voteCount;
-
+ private final ImmutableList<String> votingPeers;
private final int votesRequired;
private final int votesRequired;
- private final Collection<String> votingPeers = new ArrayList<>();
public Candidate(final RaftActorContext context) {
super(context, RaftState.Candidate);
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);
log.debug("{}: Election: Candidate has following voting peers: {}", logName(), votingPeers);
- 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());
log.debug("{}: RaftRPC message received {}, my term is {}", logName(), rpc,
context.getTermInformation().getCurrentTerm());