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:08:31 UTC

[solr] branch main 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 main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 9f2dce1d9b5 SOLR-15830: Ensure SchemaManager releases lock
9f2dce1d9b5 is described below

commit 9f2dce1d9b56e774452ab5fe914f98ddcd4fb17b
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.");
             }