From e92bde1e7ece020d581638f4c59c3840bf75d183 Mon Sep 17 00:00:00 2001 From: Erick Erickson Date: Sat, 7 Oct 2017 22:12:03 -0700 Subject: [PATCH] SOLR-11426: TestLazyCores fails too often, trying to debug --- .../java/org/apache/solr/core/SolrCores.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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 7f4b9a0c1bd..52b106380d9 100644 --- a/solr/core/src/java/org/apache/solr/core/SolrCores.java +++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java @@ -19,12 +19,17 @@ package org.apache.solr.core; import com.google.common.collect.Lists; import org.apache.http.annotation.Experimental; import org.apache.solr.common.SolrException; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.ExecutorUtil; import org.apache.solr.logging.MDCLoggingContext; +import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.update.CommitUpdateCommand; import org.apache.solr.util.DefaultSolrThreadFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.Collection; @@ -538,7 +543,17 @@ class SolrCores implements Observer { @Override public void update(Observable o, Object arg) { synchronized (modifyLock) { - pendingCloses.add((SolrCore) arg); // Essentially just queue this core up for closing. + SolrCore core = (SolrCore) arg; + SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + CommitUpdateCommand cmd = new CommitUpdateCommand(req, false); + cmd.openSearcher = false; + cmd.waitSearcher = false; + try { + core.getUpdateHandler().commit(cmd); + } catch (IOException e) { + log.warn("Caught exception trying to close a transient core, ignoring as it should be benign"); + } + pendingCloses.add(core); // Essentially just queue this core up for closing. modifyLock.notifyAll(); // Wakes up closer thread too } }