You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2021/02/03 05:20:42 UTC
[lucene-solr] branch reference_impl_dev updated: @1313 Don't do
this wait experiment, turn back on xml close after.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl_dev by this push:
new f0aaa53 @1313 Don't do this wait experiment, turn back on xml close after.
f0aaa53 is described below
commit f0aaa53a7c74d0f5581d2e9786305a49301926b1
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Feb 2 23:20:06 2021 -0600
@1313 Don't do this wait experiment, turn back on xml close after.
---
.../java/org/apache/solr/core/CoreContainer.java | 6 +++-
.../src/java/org/apache/solr/core/SolrCores.java | 37 +++++++++-------------
.../java/org/apache/solr/core/XmlConfigFile.java | 4 +--
.../java/org/apache/solr/servlet/HttpSolrCall.java | 5 +++
.../apache/solr/schema/ChangedSchemaMergeTest.java | 2 +-
.../client/solrj/MergeIndexesExampleTestBase.java | 2 +-
6 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index a86ff0b..03b348a 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -112,7 +112,6 @@ import static org.apache.solr.common.params.CommonParams.METRICS_HISTORY_PATH;
import static org.apache.solr.common.params.CommonParams.METRICS_PATH;
import static org.apache.solr.common.params.CommonParams.ZK_PATH;
import static org.apache.solr.common.params.CommonParams.ZK_STATUS_PATH;
-import static org.apache.solr.core.CorePropertiesLocator.PROPERTIES_FILENAME;
import static org.apache.solr.security.AuthenticationPlugin.AUTHENTICATION_PLUGIN_PROP;
import java.io.Closeable;
import java.io.File;
@@ -317,6 +316,11 @@ public class CoreContainer implements Closeable {
this(new SolrXmlConfig().fromSolrHome(solrHome, properties));
}
+ public CoreContainer(Path solrHome, Properties properties, boolean asyncSolrCoreLoad) throws IOException {
+ this(new SolrXmlConfig().fromSolrHome(solrHome, properties), asyncSolrCoreLoad);
+ }
+
+
/**
* Create a new CoreContainer using the given SolrResourceLoader,
* configuration and CoresLocator. The container's cores are
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index 8fccee4..660b40e 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -134,16 +134,20 @@ class SolrCores implements Closeable {
// Returns the old core if there was a core of the same name.
//WARNING! This should be the _only_ place you put anything into the list of transient cores!
protected SolrCore putCore(CoreDescriptor cd, SolrCore core) {
- if (cd.isTransient()) {
- if (getTransientCacheHandler() != null) {
- return getTransientCacheHandler().addCore(cd.getName(), core);
- }
- } else {
- residentDesciptors.put(cd.getName(), cd);
- return cores.put(cd.getName(), core);
+ // if (cd.isTransient()) {
+ // if (getTransientCacheHandler() != null) {
+ // return getTransientCacheHandler().addCore(cd.getName(), core);
+ // }
+ // } else {
+ residentDesciptors.put(cd.getName(), cd);
+ SolrCore c = cores.put(cd.getName(), core);
+ synchronized (loadingSignal) {
+ loadingSignal.notifyAll();
}
-
- return null;
+ return c;
+ // }
+ //
+ // return null;
}
/**
@@ -267,10 +271,6 @@ class SolrCores implements Closeable {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Cannot unload non-existent core [null]");
}
- if (!closed) {
- waitForLoadingCoreToFinish(name, 5000);
- }
-
if (log.isDebugEnabled()) log.debug("remove core from solrcores {}", name);
currentlyLoadingCores.remove(name);
SolrCore ret = cores.remove(name);
@@ -286,9 +286,6 @@ class SolrCores implements Closeable {
/* If you don't increment the reference count, someone could close the core before you use it. */
SolrCore getCoreFromAnyList(String name) {
- if (!closed) {
- waitForLoadingCoreToFinish(name, 5000);
- }
CoreDescriptor cd = residentDesciptors.get(name);
SolrCore core = cores.get(name);
@@ -345,10 +342,6 @@ class SolrCores implements Closeable {
public CoreDescriptor getCoreDescriptor(String coreName) {
if (coreName == null) return null;
- if (!closed) {
- waitForLoadingCoreToFinish(coreName, 5000);
- }
-
CoreDescriptor cd = residentDesciptors.get(coreName);
if (cd != null) {
return cd;
@@ -418,14 +411,14 @@ class SolrCores implements Closeable {
while (isCoreLoading(core)) {
synchronized (loadingSignal) {
try {
- loadingSignal.wait(250);
+ loadingSignal.wait(1000);
} catch (InterruptedException e) {
+ ParWork.propagateInterrupt(e);
return;
}
}
if (System.nanoTime() >= timeout) {
log.warn("Timed out waiting for SolrCore, {}, to finish loading.", core);
- throw new RuntimeException("Timed out waiting for SolrCore, "+ core + ", to finish loading.");
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java b/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
index f19a0b7..41a8add 100644
--- a/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
+++ b/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
@@ -158,8 +158,8 @@ public class XmlConfigFile { // formerly simply "Config"
// po.setXIncludeAware(true);
// po.setCheckEntityReferences(false);
// po.setExpandAttributeDefaults(false);
- // po.setDTDValidationMode(Validation.STRIP);
- //po.setPleaseCloseAfterUse(true);
+ po.setDTDValidationMode(Validation.STRIP);
+ po.setPleaseCloseAfterUse(true);
Sender.send(source, builder, po);
docTree = (TinyDocumentImpl) builder.getCurrentRoot();
} catch (Exception e) {
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 0421f6b..d488e59 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -258,8 +258,13 @@ public class HttpSolrCall {
}
// Try to resolve a Solr core name
+
core = cores.getCore(origCorename);
+ if (core == null && cores.isCoreLoading(origCorename)) {
+ cores.waitForLoadingCore(origCorename, 3000);
+ }
+
if (log.isDebugEnabled()) log.debug("tried to get core by name {} got {}, existing cores {} found={}", origCorename, core, cores.getAllCoreNames(), core != null);
// if (core == null) {
diff --git a/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java b/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java
index 7f79358..b0f7fd8 100644
--- a/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java
@@ -95,7 +95,7 @@ public class ChangedSchemaMergeTest extends SolrTestCaseJ4 {
File solrXml = new File(solrHomeDirectory, "solr.xml");
FileUtils.write(solrXml, discoveryXml, StandardCharsets.UTF_8);
- final CoreContainer cores = new CoreContainer(solrHomeDirectory.toPath(), new Properties());
+ final CoreContainer cores = new CoreContainer(solrHomeDirectory.toPath(), new Properties(), false);
cores.load();
return cores;
}
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java b/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
index 7c61e21..da54ac8 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
@@ -55,7 +55,7 @@ public abstract class MergeIndexesExampleTestBase extends SolrTestCaseJ4 {
}
protected void setupCoreContainer() throws IOException {
- cores = new CoreContainer(getSolrHome(), new Properties());
+ cores = new CoreContainer(getSolrHome(), new Properties(), false);
cores.load();
//cores = CoreContainer.createAndLoad(getSolrHome(), new File(TEMP_DIR, "solr.xml"));
}