Skip to content

Commit d766e9e

Browse files
SOLR-18081: ShardRequestTracker should use a unique key for requests (#4068)
1 parent b314f8f commit d766e9e

File tree

13 files changed

+184
-66
lines changed

13 files changed

+184
-66
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
2+
title: ShardRequestTracker now indexes Admin API results by node and replica rather than just node. This fixes situations where multiple sub-requests are sent to a single node.
3+
type: fixed # added, changed, fixed, deprecated, removed, dependency_update, security, other
4+
authors:
5+
- name: Houston Putman
6+
nick: HoustonPutman
7+
links:
8+
- name: SOLR-18081
9+
url: https://issues.apache.org/jira/browse/SOLR-18081

solr/core/src/java/org/apache/solr/cloud/api/collections/AddReplicaCmd.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ List<ZkNodeProps> addReplica(
175175
ModifiableSolrParams params =
176176
getReplicaParams(
177177
message, collectionName, coll, skipCreateReplicaInClusterState, createReplica);
178-
shardRequestTracker.sendShardRequest(createReplica.node, params, shardHandler);
178+
shardRequestTracker.sendShardRequest(
179+
createReplica.node, createReplica.coreNodeName, params, shardHandler);
179180
}
180181

181182
Runnable runnable =

solr/core/src/java/org/apache/solr/cloud/api/collections/BackupCmd.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ private void incrementalCopyIndexFiles(
350350
slice.getName(), backupManager.getBackupId().getId());
351351
params.set(CoreAdminParams.SHARD_BACKUP_ID, shardBackupId.getIdAsString());
352352

353-
shardRequestTracker.sendShardRequest(replica.getNodeName(), params, shardHandler);
353+
shardRequestTracker.sendShardRequest(replica, params, shardHandler);
354354
log.debug("Sent backup request to core={} for backupName={}", coreName, backupName);
355355
}
356356
log.debug("Sent backup requests to all shard leaders for backupName={}", backupName);
@@ -532,7 +532,7 @@ private void copyIndexFiles(
532532
params.set(CoreAdminParams.COMMIT_NAME, snapshotMeta.get().getName());
533533
}
534534

535-
shardRequestTracker.sendShardRequest(replica.getNodeName(), params, shardHandler);
535+
shardRequestTracker.sendShardRequest(replica, params, shardHandler);
536536
log.debug("Sent backup request to core={} for backupName={}", coreName, backupName);
537537
}
538538
log.debug("Sent backup requests to all shard leaders for backupName={}", backupName);

solr/core/src/java/org/apache/solr/cloud/api/collections/CollApiCmds.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,8 @@ public void call(AdminCmdContext clusterState, ZkNodeProps message, NamedList<Ob
314314

315315
String baseUrl = ccc.getZkStateReader().getBaseUrlForNodeName(message.getStr(NODE_NAME_PROP));
316316
ShardRequest sreq = new ShardRequest();
317-
sreq.nodeName = message.getStr(ZkStateReader.CORE_NAME_PROP);
317+
sreq.nodeName = message.getStr(NODE_NAME_PROP);
318+
sreq.coreNodeName = message.getStr(CORE_NODE_NAME_PROP);
318319
// yes, they must use same admin handler path everywhere...
319320
params.set("qt", ccc.getAdminPath());
320321
sreq.purpose = ShardRequest.PURPOSE_PRIVATE;

0 commit comments

Comments
 (0)