You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by kr...@apache.org on 2022/05/01 16:11:25 UTC
[solr] branch branch_9x updated: SOLR-15830: Ensure SchemaManager releases lock
This is an automated email from the ASF dual-hosted git repository.
krisden 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 691bc7d3f15 SOLR-15830: Ensure SchemaManager releases lock
691bc7d3f15 is described below
commit 691bc7d3f15e917983fc64c38b287c0bd8128ad7
Author: Kevin Risden <kr...@apache.org>
AuthorDate: Fri Apr 29 16:58:37 2022 -0400
SOLR-15830: Ensure SchemaManager releases lock
---
.../org/apache/solr/handler/SolrConfigHandler.java | 2 +-
.../java/org/apache/solr/schema/SchemaManager.java | 26 +++++++++++++---------
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 6666c57d7dc..f66d13ca619 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -105,7 +105,7 @@ public class SolrConfigHandler extends RequestHandlerBase
public static final boolean configEditing_disabled =
Boolean.getBoolean(CONFIGSET_EDITING_DISABLED_ARG);
private static final Map<String, SolrConfig.SolrPluginInfo> namedPlugins;
- private Lock reloadLock = new ReentrantLock(true);
+ private final Lock reloadLock = new ReentrantLock(true);
public Lock getReloadLock() {
return reloadLock;
diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
index de64499349b..5ab9c412f1a 100644
--- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
+++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
@@ -132,17 +132,21 @@ public class SchemaManager {
SolrConfigHandler configHandler =
((SolrConfigHandler) req.getCore().getRequestHandler("/config"));
if (configHandler.getReloadLock().tryLock()) {
- latestVersion =
- ZkController.persistConfigResourceToZooKeeper(
- zkLoader,
- managedIndexSchema.getSchemaZkVersion(),
- managedIndexSchema.getResourceName(),
- sw.toString().getBytes(StandardCharsets.UTF_8),
- true);
- req.getCore()
- .getCoreContainer()
- .reload(req.getCore().getName(), req.getCore().uniqueId);
- break;
+ try {
+ latestVersion =
+ ZkController.persistConfigResourceToZooKeeper(
+ zkLoader,
+ managedIndexSchema.getSchemaZkVersion(),
+ managedIndexSchema.getResourceName(),
+ sw.toString().getBytes(StandardCharsets.UTF_8),
+ true);
+ req.getCore()
+ .getCoreContainer()
+ .reload(req.getCore().getName(), req.getCore().uniqueId);
+ break;
+ } finally {
+ configHandler.getReloadLock().unlock();
+ }
} else {
log.info("Another reload is in progress. Not doing anything.");
}