From 13f57cc27eef3542fa0fbfbd16bdf3830369efd1 Mon Sep 17 00:00:00 2001 From: Pierre Salagnac Date: Wed, 8 Oct 2025 18:59:47 +0200 Subject: [PATCH 1/2] SOLR-17931: Remove deprecated ShardRequestTracker.track(). Refactored collection creation command so it does not use internals of ShardRequestTracker. --- .../collections/CollectionHandlingUtils.java | 11 ++------ .../api/collections/CreateCollectionCmd.java | 26 +++++++------------ 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/CollectionHandlingUtils.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/CollectionHandlingUtils.java index e90be1d255db..806ad86ba044 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/CollectionHandlingUtils.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/CollectionHandlingUtils.java @@ -650,7 +650,8 @@ public void sendShardRequest( if (asyncId != null) { String coreAdminAsyncId = asyncId + Math.abs(System.nanoTime()); params.set(ASYNC, coreAdminAsyncId); - track(nodeName, coreAdminAsyncId); + // Track async requests + shardAsyncIdByNode.add(nodeName, coreAdminAsyncId); } ShardRequest sreq = new ShardRequest(); @@ -720,13 +721,5 @@ private void waitForAsyncCallsToComplete(NamedList results) { } } } - - /** - * @deprecated consider to make it private after {@link CreateCollectionCmd} refactoring - */ - @Deprecated - void track(String nodeName, String coreAdminAsyncId) { - shardAsyncIdByNode.add(nodeName, coreAdminAsyncId); - } } } diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java index 34ca3d0e2881..aa9e3b8222f7 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java @@ -84,7 +84,6 @@ import org.apache.solr.core.CoreContainer; import org.apache.solr.handler.admin.ConfigSetsHandler; import org.apache.solr.handler.component.ShardHandler; -import org.apache.solr.handler.component.ShardRequest; import org.apache.solr.util.TimeOut; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; @@ -266,7 +265,8 @@ public void call(ClusterState clusterState, ZkNodeProps message, NamedList coresToCreate = new LinkedHashMap<>(); + + Map coresToCreate = new LinkedHashMap<>(); ShardHandler shardHandler = ccc.newShardHandler(); final DistributedClusterStateUpdater.StateChangeRecorder scr; @@ -359,19 +359,10 @@ public void call(ClusterState clusterState, ZkNodeProps message, NamedList e : coresToCreate.entrySet()) { - ShardRequest sreq = e.getValue(); - sreq.params.set(CoreAdminParams.CORE_NODE_NAME, replicas.get(e.getKey()).getName()); - shardHandler.submit(sreq, sreq.shards[0], sreq.params); + for (Map.Entry e : coresToCreate.entrySet()) { + CoreToCreate toCreate = e.getValue(); + toCreate.params.set(CoreAdminParams.CORE_NODE_NAME, replicas.get(e.getKey()).getName()); + shardRequestTracker.sendShardRequest(toCreate.nodeName, toCreate.params, shardHandler); } shardRequestTracker.processResponses( @@ -796,4 +787,7 @@ private static void getConfName( "Could not find configName for collection " + collection + " found:" + configNames); } } + + /** Internal structure to track cores to create with the collection. */ + private record CoreToCreate(String nodeName, ModifiableSolrParams params) {} } From 03140b252cbefaea59f8e0f8bcc0dadc8b935799 Mon Sep 17 00:00:00 2001 From: Pierre Salagnac Date: Thu, 16 Oct 2025 13:59:21 +0200 Subject: [PATCH 2/2] Replace internal structure my a map --- .../api/collections/CreateCollectionCmd.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java index aa9e3b8222f7..80cc02664bdb 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java @@ -266,7 +266,8 @@ public void call(ClusterState clusterState, ZkNodeProps message, NamedList coresToCreate = new LinkedHashMap<>(); + Map coresToCreate = new LinkedHashMap<>(); + Map nodeNames = new HashMap<>(); ShardHandler shardHandler = ccc.newShardHandler(); final DistributedClusterStateUpdater.StateChangeRecorder scr; @@ -362,7 +363,8 @@ public void call(ClusterState clusterState, ZkNodeProps message, NamedList e : coresToCreate.entrySet()) { - CoreToCreate toCreate = e.getValue(); - toCreate.params.set(CoreAdminParams.CORE_NODE_NAME, replicas.get(e.getKey()).getName()); - shardRequestTracker.sendShardRequest(toCreate.nodeName, toCreate.params, shardHandler); + for (Map.Entry e : coresToCreate.entrySet()) { + ModifiableSolrParams params = e.getValue(); + String nodeName = nodeNames.get(e.getKey()); + params.set(CoreAdminParams.CORE_NODE_NAME, replicas.get(e.getKey()).getName()); + shardRequestTracker.sendShardRequest(nodeName, params, shardHandler); } shardRequestTracker.processResponses( @@ -787,7 +790,4 @@ private static void getConfName( "Could not find configName for collection " + collection + " found:" + configNames); } } - - /** Internal structure to track cores to create with the collection. */ - private record CoreToCreate(String nodeName, ModifiableSolrParams params) {} }