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),

Reply via email to