You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/05/08 15:26:20 UTC

[03/50] [abbrv] lucene-solr:jira/solr-10262: SOLR-10588: Prevent redundant double core reload on config update.

SOLR-10588: Prevent redundant double core reload on config update.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cbd3b02c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cbd3b02c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cbd3b02c

Branch: refs/heads/jira/solr-10262
Commit: cbd3b02cda1ce9d42cf78f7571bc96a8af4fe219
Parents: b5e9b5a
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Sun Apr 30 23:37:51 2017 +0300
Committer: Mikhail Khludnev <mk...@apache.org>
Committed: Wed May 3 07:10:05 2017 +0300

----------------------------------------------------------------------
 solr/CHANGES.txt                                  |  2 ++
 .../src/java/org/apache/solr/core/SolrCore.java   | 18 ++++++++++++++----
 .../apache/solr/handler/SolrConfigHandler.java    |  5 +++++
 3 files changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbd3b02c/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 8f20831..1888d66 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -273,6 +273,8 @@ Bug Fixes
 
 * SOLR-10316: Unloading a core can remove a ZK SolrCore registration entry for the wrong SolrCore. (Mark Miller)
 
+* SOLR-10588: Prevent redundant core reload on config update (Mikhail Khludnev)
+
 Other Changes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbd3b02c/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index d3a1df1..f0bb88b 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -100,6 +100,7 @@ import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager.SnapshotMetaDa
 import org.apache.solr.handler.IndexFetcher;
 import org.apache.solr.handler.ReplicationHandler;
 import org.apache.solr.handler.RequestHandlerBase;
+import org.apache.solr.handler.SolrConfigHandler;
 import org.apache.solr.handler.component.HighlightComponent;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.logging.MDCLoggingContext;
@@ -2945,10 +2946,19 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
           checkStale(zkClient, solrConfigPath, overlayVersion) ||
           checkStale(zkClient, managedSchmaResourcePath, managedSchemaVersion)) {
         log.info("core reload {}", coreName);
-        try {
-          cc.reload(coreName);
-        } catch (SolrCoreState.CoreIsClosedException e) {
-          /*no problem this core is already closed*/
+        SolrConfigHandler configHandler = ((SolrConfigHandler)core.getRequestHandler("/config"));
+        if (configHandler.getReloadLock().tryLock()){
+          
+          try {
+            cc.reload(coreName);
+          } catch (SolrCoreState.CoreIsClosedException e) {
+            /*no problem this core is already closed*/
+          } finally {
+            configHandler.getReloadLock().unlock();
+          }
+        
+        } else {
+          log.info("Another reload is in progress. Not doing anything.");
         }
         return;
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbd3b02c/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
----------------------------------------------------------------------
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 08ce838..e984f5a 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -104,6 +104,11 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
   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);
+
+  public Lock getReloadLock() {
+    return reloadLock;
+  }
+
   private boolean isImmutableConfigSet = false;
 
   static {