You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mk...@apache.org on 2017/05/03 04:55:28 UTC
lucene-solr:master: SOLR-10588: Prevent redundant double core reload
on config update.
Repository: lucene-solr
Updated Branches:
refs/heads/master b5e9b5aaf -> cbd3b02cd
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/master
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 {