You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by st...@apache.org on 2023/09/12 21:26:18 UTC
[solr] branch branch_9x updated: SOLR-16899: Do not statically register ops in CoreAdminHandler (#1892)
This is an automated email from the ASF dual-hosted git repository.
stillalex pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_9x by this push:
new d35a1720f19 SOLR-16899: Do not statically register ops in CoreAdminHandler (#1892)
d35a1720f19 is described below
commit d35a1720f19fc88c44e6e45529d6acff41c254c5
Author: Vincent P <vi...@gmail.com>
AuthorDate: Tue Sep 12 23:23:21 2023 +0200
SOLR-16899: Do not statically register ops in CoreAdminHandler (#1892)
Co-authored-by: Vincent Primault <vp...@salesforce.com>
Co-authored-by: Alex Deparvu <st...@apache.org>
(cherry picked from commit 4989aadf2794d688879353fd8219a69190ad1049)
---
solr/CHANGES.txt | 2 ++
.../apache/solr/handler/admin/CoreAdminHandler.java | 18 +++++++++++-------
.../solr/handler/admin/CoreAdminHandlerActionTest.java | 3 +--
3 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 1331a29c333..c1a7553bec2 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -112,6 +112,8 @@ Bug Fixes
* SOLR-16415: asyncId must not have '/'; enforce this. Enhance ZK cleanup to process directories
instead of fail. (David Smiley, Paul McArthur)
+* SOLR-16899: CoreAdminOp are statically registered in CoreAdminHandler, preventing more than one Solr instance in the same JVM (Vincent Primault via Alex Deparvu)
+
Dependency Upgrades
---------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
index f9819dcaf80..8ee1bf3254a 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
@@ -95,6 +95,7 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
protected final CoreContainer coreContainer;
protected final CoreAdminAsyncTracker coreAdminAsyncTracker;
+ protected final Map<String, CoreAdminOp> opMap;
public static String RESPONSE_STATUS = "STATUS";
@@ -107,6 +108,7 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
// should happen in the constructor...
this.coreContainer = null;
this.coreAdminAsyncTracker = new CoreAdminAsyncTracker();
+ this.opMap = initializeOpMap();
}
/**
@@ -117,6 +119,7 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
public CoreAdminHandler(final CoreContainer coreContainer) {
this.coreContainer = coreContainer;
this.coreAdminAsyncTracker = new CoreAdminAsyncTracker();
+ this.opMap = initializeOpMap();
}
@Override
@@ -275,6 +278,14 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
Map.entry(ZkStateReader.NUM_SHARDS_PROP, CloudDescriptor.NUM_SHARDS),
Map.entry(CoreAdminParams.REPLICA_TYPE, CloudDescriptor.REPLICA_TYPE));
+ private static Map<String, CoreAdminOp> initializeOpMap() {
+ Map<String, CoreAdminOp> opMap = new HashMap<>();
+ for (CoreAdminOperation op : CoreAdminOperation.values()) {
+ opMap.put(op.action.toString().toLowerCase(Locale.ROOT), op);
+ }
+ return opMap;
+ }
+
protected static Map<String, String> buildCoreParams(SolrParams params) {
Map<String, String> coreParams = new HashMap<>();
@@ -345,8 +356,6 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
coreAdminAsyncTracker.shutdown();
}
- private static final Map<String, CoreAdminOp> opMap = new HashMap<>();
-
public static class CallInfo {
public final CoreAdminHandler handler;
public final SolrQueryRequest req;
@@ -397,11 +406,6 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
CoreSnapshotAPI.class, InstallCoreDataAPI.class, BackupCoreAPI.class, RestoreCoreAPI.class);
}
- static {
- for (CoreAdminOperation op : CoreAdminOperation.values())
- opMap.put(op.action.toString().toLowerCase(Locale.ROOT), op);
- }
-
public interface CoreAdminOp {
default boolean isExpensive() {
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerActionTest.java b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerActionTest.java
index 58ca65a795b..235db7af21e 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerActionTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerActionTest.java
@@ -47,8 +47,7 @@ public class CoreAdminHandlerActionTest extends SolrTestCaseJ4 {
public static void beforeClass() throws Exception {
setupNoCoreTest(createTempDir(), SOLR_XML);
-
- admin = new CoreAdminHandler(h.getCoreContainer());
+ admin = h.getCoreContainer().getMultiCoreHandler();
}
@Test