You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by ho...@apache.org on 2010/03/16 19:02:46 UTC
svn commit: r923909 -
/lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java
Author: hossman
Date: Tue Mar 16 18:02:46 2010
New Revision: 923909
URL: http://svn.apache.org/viewvc?rev=923909&view=rev
Log:
SOLR-1743: Restore the error reporting behavior of 'single core' solr instances. (This was a bug introduced when the default core feature was added after 1.4 was released)
Modified:
lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java
Modified: lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java?rev=923909&r1=923908&r2=923909&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java Tue Mar 16 18:02:46 2010
@@ -69,9 +69,14 @@ public class CoreContainer
protected boolean shareSchema;
protected String solrHome;
protected String solrConfigFilenameOverride;
-
private String defaultCoreName = "";
-
+
+ // assigned by Initializer
+ private boolean defaultAbortOnConfigError = false;
+ // number of cores that either explicitly, or because of
+ // default, said to abort on config error
+ private int numCoresAbortOnConfigError = 0;
+
public CoreContainer() {
solrHome = SolrResourceLoader.locateSolrHome();
}
@@ -83,12 +88,18 @@ public class CoreContainer
// Helper class to initialize the CoreContainer
public static class Initializer {
protected String solrConfigFilename = null;
+ // default to true for legacy behavior
protected boolean abortOnConfigurationError = true;
public boolean isAbortOnConfigurationError() {
return abortOnConfigurationError;
}
-
+
+ /** Note for no good reason what so ever, this method has only ever
+ * influenced the default behavior of "single core" mode. when using
+ * solr.xml values specified this way are ignored, and false is the default.
+ * initialize() will modify this value.
+ */
public void setAbortOnConfigurationError(boolean abortOnConfigurationError) {
this.abortOnConfigurationError = abortOnConfigurationError;
}
@@ -111,20 +122,17 @@ public class CoreContainer
log.info("looking for solr.xml: " + fconf.getAbsolutePath());
cores = new CoreContainer();
cores.solrConfigFilenameOverride = solrConfigFilename;
- if (fconf.exists())
+ if (fconf.exists()) {
+ // default abortOnConfigurationError ignored in multicore
+ cores.defaultAbortOnConfigError = false;
cores.load(solrHome, fconf);
- else {
+ } else {
+ cores.defaultAbortOnConfigError = abortOnConfigurationError;
cores.load(solrHome, new ByteArrayInputStream(DEF_SOLR_XML.getBytes()));
cores.configFile = fconf;
}
- abortOnConfigurationError = false;
- // if any core aborts on startup, then abort
- for (SolrCore c : cores.getCores()) {
- if (c.getSolrConfig().getBool("abortOnConfigurationError", false)) {
- abortOnConfigurationError = true;
- break;
- }
- }
+ setAbortOnConfigurationError(0 < cores.numCoresAbortOnConfigError);
+
solrConfigFilename = cores.getConfigFile().getName();
return cores;
@@ -404,6 +412,11 @@ public class CoreContainer
// Initialize the solr config
SolrResourceLoader solrLoader = new SolrResourceLoader(instanceDir, libLoader, getCoreProps(instanceDir, dcore.getPropertiesName(),dcore.getCoreProperties()));
SolrConfig config = new SolrConfig(solrLoader, dcore.getConfigName(), null);
+
+ if (config.getBool("abortOnConfigurationError",defaultAbortOnConfigError)) {
+ numCoresAbortOnConfigError++;
+ }
+
IndexSchema schema = null;
if(indexSchemaCache != null){
//schema sharing is enabled. so check if it already is loaded