This is an automated email from the ASF dual-hosted git repository. dsmiley pushed a commit to branch branch_10_0 in repository https://gitbox.apache.org/repos/asf/solr.git
commit 86f68331806bf612a05bd2455279c3ea9deaf457 Author: David Smiley <[email protected]> AuthorDate: Sun Oct 19 10:33:08 2025 -0400 SOLR-17963: Don't lock: COLLECTIONPROP, ADDREPLICAPROP, DELETEREPLICAPROP (#3786) These SolrCloud commands no longer aquire locks (waiting or blocking on other commands that do): COLLECTIONPROP, ADDREPLICAPROP, DELETEREPLICAPROP. They are atomic/transactional and are not believed to interfere with commands that need locks. --- solr/CHANGES.txt | 3 +++ solr/core/src/test/org/apache/solr/cloud/TestLockTree.java | 5 ++--- .../src/java/org/apache/solr/common/params/CollectionParams.java | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index c729d365b2c..952b33034d3 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -527,6 +527,9 @@ Other Changes * PR#3758: Logs: removed webapp=/solr and also removed from internal context map. +* SOLR-17963: These SolrCloud commands no longer aquire locks (waiting or blocking on other commands that do): + COLLECTIONPROP, ADDREPLICAPROP, DELETEREPLICAPROP. (David Smiley) + ================== 9.10.0 ================== New Features --------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java b/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java index 33455cc2f0c..2604feadd65 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestLockTree.java @@ -19,6 +19,7 @@ package org.apache.solr.cloud; import static org.apache.solr.common.params.CollectionParams.CollectionAction.ADDREPLICAPROP; import static org.apache.solr.common.params.CollectionParams.CollectionAction.DELETEREPLICA; +import static org.apache.solr.common.params.CollectionParams.CollectionAction.MOCK_REPLICA_TASK; import static org.apache.solr.common.params.CollectionParams.CollectionAction.MODIFYCOLLECTION; import static org.apache.solr.common.params.CollectionParams.CollectionAction.SPLITSHARD; @@ -48,8 +49,6 @@ public class TestLockTree extends SolrTestCaseJ4 { .getSession() .lock(CollectionAction.BALANCESHARDUNIQUE, Arrays.asList("coll1", "shard1"))); - assertNull( - lockTree.getSession().lock(ADDREPLICAPROP, Arrays.asList("coll1", "shard1", "core_node2"))); coll1Lock.unlock(); Lock shard1Lock = lockTree @@ -62,7 +61,7 @@ public class TestLockTree extends SolrTestCaseJ4 { assertNotNull(replica1Lock); List<Pair<CollectionAction, List<String>>> operations = new ArrayList<>(); - operations.add(new Pair<>(ADDREPLICAPROP, Arrays.asList("coll1", "shard1", "core_node2"))); + operations.add(new Pair<>(MOCK_REPLICA_TASK, Arrays.asList("coll1", "shard1", "core_node2"))); operations.add(new Pair<>(MODIFYCOLLECTION, Arrays.asList("coll1"))); operations.add(new Pair<>(SPLITSHARD, Arrays.asList("coll1", "shard1"))); operations.add(new Pair<>(SPLITSHARD, Arrays.asList("coll2", "shard2"))); diff --git a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java index 73e2e9518a1..6ae82508df4 100644 --- a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java +++ b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java @@ -101,7 +101,7 @@ public interface CollectionParams { ADDROLE(true, LockLevel.NONE), REMOVEROLE(true, LockLevel.NONE), CLUSTERPROP(true, LockLevel.NONE), - COLLECTIONPROP(true, LockLevel.COLLECTION), + COLLECTIONPROP(true, LockLevel.NONE), // atomic; no lock REQUESTSTATUS(false, LockLevel.NONE), DELETESTATUS(false, LockLevel.NONE), ADDREPLICA(true, LockLevel.SHARD), @@ -111,8 +111,8 @@ public interface CollectionParams { DISTRIBUTEDAPIPROCESSING(false, LockLevel.NONE), LIST(false, LockLevel.NONE), CLUSTERSTATUS(false, LockLevel.NONE), - ADDREPLICAPROP(true, LockLevel.REPLICA), - DELETEREPLICAPROP(true, LockLevel.REPLICA), + ADDREPLICAPROP(true, LockLevel.NONE), // atomic; no lock + DELETEREPLICAPROP(true, LockLevel.NONE), // atomic; no lock BALANCESHARDUNIQUE(true, LockLevel.COLLECTION), REBALANCELEADERS(true, LockLevel.COLLECTION), MODIFYCOLLECTION(true, LockLevel.COLLECTION),
