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"));
   }