This is an automated email from the ASF dual-hosted git repository.
dsmiley pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_10x by this push:
new 4bc310d0ffa SOLR-17963: Don't lock: COLLECTIONPROP, ADDREPLICAPROP,
DELETEREPLICAPROP (#3786)
4bc310d0ffa is described below
commit 4bc310d0ffa6559df9f28bbce64eb8504b99d302
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 8c4f8420ce3..9ad5fcfa37e 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -305,6 +305,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),