Skip to content

Commit d260f0f

Browse files
SOLR-17560: Remove redundant getLeaderReplicas method (#3515)
To simplify & reduce weight of DocCollection. This method was only called in one place and it doesn't seem worthy.
1 parent 9ac3c6d commit d260f0f

File tree

4 files changed

+19
-28
lines changed

4 files changed

+19
-28
lines changed

solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -889,15 +889,17 @@ protected SolrCore getCoreByCollection(String collectionName, boolean isPreferLe
889889
return null;
890890
}
891891
Set<String> liveNodes = clusterState.getLiveNodes();
892+
List<Replica> replicas = collection.getReplicasOnNode(cores.getZkController().getNodeName());
892893

893894
if (isPreferLeader) {
894-
List<Replica> leaderReplicas =
895-
collection.getLeaderReplicas(cores.getZkController().getNodeName());
896-
SolrCore core = randomlyGetSolrCore(liveNodes, leaderReplicas);
897-
if (core != null) return core;
895+
SolrCore core = null;
896+
if (replicas != null && !replicas.isEmpty()) {
897+
List<Replica> leaderReplicas = replicas.stream().filter(Replica::isLeader).toList();
898+
core = randomlyGetSolrCore(liveNodes, leaderReplicas);
899+
if (core != null) return core;
900+
}
898901
}
899902

900-
List<Replica> replicas = collection.getReplicasOnNode(cores.getZkController().getNodeName());
901903
return randomlyGetSolrCore(liveNodes, replicas);
902904
}
903905

solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -467,12 +467,17 @@ public void testThatCantForwardToLeaderFails() throws Exception {
467467
(n, c) -> DocCollection.isFullyActive(n, c, 2, 1));
468468

469469
{ // HACK: Check the leaderProps for the shard hosted on the node we're going to kill...
470-
final Replica leaderProps =
470+
List<Replica> replicas =
471471
cloudClient
472472
.getClusterState()
473473
.getCollection(collectionName)
474-
.getLeaderReplicas(leaderToPartition.getNodeName())
475-
.get(0);
474+
.getReplicasOnNode(leaderToPartition.getNodeName());
475+
assertNotNull(replicas);
476+
assertFalse(replicas.isEmpty());
477+
List<Replica> leaderReplicas = replicas.stream().filter(Replica::isLeader).toList();
478+
assertFalse(leaderReplicas.isEmpty());
479+
final Replica leaderProps = leaderReplicas.get(0);
480+
476481
// No point in this test if these aren't true...
477482
assertNotNull(
478483
"Sanity check: leaderProps isn't a leader?: " + leaderProps.toString(),

solr/core/src/test/org/apache/solr/update/processor/RoutedAliasUpdateProcessorTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,10 @@ Set<String> getLeaderCoreNames(ClusterState clusterState) {
205205
String nodeName = jettySolrRunner.getNodeName();
206206
String collectionName = core.getCollectionName();
207207
DocCollection collectionOrNull = clusterState.getCollectionOrNull(collectionName);
208-
List<Replica> leaderReplicas = collectionOrNull.getLeaderReplicas(nodeName);
209-
if (leaderReplicas != null) {
208+
if (collectionOrNull != null) {
209+
List<Replica> replicas = collectionOrNull.getReplicasOnNode(nodeName);
210+
assertNotNull(replicas);
211+
List<Replica> leaderReplicas = replicas.stream().filter(Replica::isLeader).toList();
210212
for (Replica leaderReplica : leaderReplicas) {
211213
leaders.add(leaderReplica.getCoreName());
212214
}

solr/solrj/src/java/org/apache/solr/common/cloud/DocCollection.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import java.util.function.BiConsumer;
3535
import java.util.function.BiPredicate;
3636
import java.util.function.Supplier;
37-
import org.apache.solr.common.cloud.Replica.ReplicaStateProps;
3837
import org.slf4j.Logger;
3938
import org.slf4j.LoggerFactory;
4039

@@ -54,7 +53,6 @@ public class DocCollection extends ZkNodeProps implements Iterable<Slice> {
5453
private final Map<String, Slice> activeSlices;
5554
private final Slice[] activeSlicesArr;
5655
private final Map<String, List<Replica>> nodeNameReplicas;
57-
private final Map<String, List<Replica>> nodeNameLeaderReplicas;
5856
private final DocRouter router;
5957
private final String znode;
6058

@@ -114,7 +112,6 @@ private DocCollection(
114112
this.configName = (String) props.get(CollectionStateProps.CONFIGNAME);
115113
this.slices = slices;
116114
this.activeSlices = new HashMap<>();
117-
this.nodeNameLeaderReplicas = new HashMap<>();
118115
this.nodeNameReplicas = new HashMap<>();
119116
this.replicationFactor = (Integer) verifyProp(props, CollectionStateProps.REPLICATION_FACTOR);
120117
this.numReplicas = ReplicaCount.fromProps(props);
@@ -251,15 +248,6 @@ private void addNodeNameReplica(Replica replica) {
251248
nodeNameReplicas.put(replica.getNodeName(), replicas);
252249
}
253250
replicas.add(replica);
254-
255-
if (replica.getStr(ReplicaStateProps.LEADER) != null) {
256-
List<Replica> leaderReplicas = nodeNameLeaderReplicas.get(replica.getNodeName());
257-
if (leaderReplicas == null) {
258-
leaderReplicas = new ArrayList<>();
259-
nodeNameLeaderReplicas.put(replica.getNodeName(), leaderReplicas);
260-
}
261-
leaderReplicas.add(replica);
262-
}
263251
}
264252

265253
/**
@@ -368,12 +356,6 @@ public List<Replica> getReplicasOnNode(String nodeName) {
368356
return nodeNameReplicas.get(nodeName);
369357
}
370358

371-
/** Get the list of all leaders hosted on the given node or <code>null</code> if none. */
372-
@Deprecated
373-
public List<Replica> getLeaderReplicas(String nodeName) {
374-
return nodeNameLeaderReplicas.get(nodeName);
375-
}
376-
377359
public int getZNodeVersion() {
378360
return znodeVersion;
379361
}

0 commit comments

Comments
 (0)