Madan Jampani
Committed by Gerrit Code Review

Eliminate possible redundant update when rearranging candidate order in leadership manager

Change-Id: Id76345ab827c4b6f55114f3afacdbc334092818a
...@@ -2,6 +2,7 @@ package org.onosproject.store.consistent.impl; ...@@ -2,6 +2,7 @@ package org.onosproject.store.consistent.impl;
2 2
3 import com.google.common.collect.ImmutableList; 3 import com.google.common.collect.ImmutableList;
4 import com.google.common.collect.ImmutableMap; 4 import com.google.common.collect.ImmutableMap;
5 +import com.google.common.collect.Iterables;
5 import com.google.common.collect.Lists; 6 import com.google.common.collect.Lists;
6 import com.google.common.collect.Maps; 7 import com.google.common.collect.Maps;
7 import com.google.common.collect.Sets; 8 import com.google.common.collect.Sets;
...@@ -350,8 +351,9 @@ public class DistributedLeadershipManager implements LeadershipService { ...@@ -350,8 +351,9 @@ public class DistributedLeadershipManager implements LeadershipService {
350 @Override 351 @Override
351 public boolean makeTopCandidate(String path, NodeId nodeId) { 352 public boolean makeTopCandidate(String path, NodeId nodeId) {
352 Versioned<List<NodeId>> newCandidates = candidateMap.computeIf(path, 353 Versioned<List<NodeId>> newCandidates = candidateMap.computeIf(path,
353 - candidates -> (candidates != null && candidates.contains(nodeId)) || 354 + candidates -> candidates != null &&
354 - (candidates != null && Objects.equals(nodeId, candidates.get(LEADER_CANDIDATE_POS))), 355 + candidates.contains(nodeId) &&
356 + !nodeId.equals(Iterables.getFirst(candidates, null)),
355 (topic, candidates) -> { 357 (topic, candidates) -> {
356 List<NodeId> updatedCandidates = new ArrayList<>(candidates.size()); 358 List<NodeId> updatedCandidates = new ArrayList<>(candidates.size());
357 updatedCandidates.add(nodeId); 359 updatedCandidates.add(nodeId);
......