mirror of https://github.com/apache/lucene.git
Fix for SOLR-3984, unloading core with deleteInstanceDir not working unless path absolute
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1402254 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7b80e3f377
commit
b8c727af8d
|
@ -34,9 +34,6 @@ import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.SynchronousQueue;
|
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
@ -59,7 +56,6 @@ import org.apache.solr.common.SolrException;
|
||||||
import org.apache.solr.common.SolrException.ErrorCode;
|
import org.apache.solr.common.SolrException.ErrorCode;
|
||||||
import org.apache.solr.common.cloud.ZkStateReader;
|
import org.apache.solr.common.cloud.ZkStateReader;
|
||||||
import org.apache.solr.common.cloud.ZooKeeperException;
|
import org.apache.solr.common.cloud.ZooKeeperException;
|
||||||
import org.apache.solr.common.util.ExecutorUtil;
|
|
||||||
import org.apache.solr.core.SolrXMLSerializer.SolrCoreXMLDef;
|
import org.apache.solr.core.SolrXMLSerializer.SolrCoreXMLDef;
|
||||||
import org.apache.solr.core.SolrXMLSerializer.SolrXMLDef;
|
import org.apache.solr.core.SolrXMLSerializer.SolrXMLDef;
|
||||||
import org.apache.solr.handler.admin.CollectionsHandler;
|
import org.apache.solr.handler.admin.CollectionsHandler;
|
||||||
|
@ -72,7 +68,6 @@ import org.apache.solr.logging.jul.JulWatcher;
|
||||||
import org.apache.solr.schema.IndexSchema;
|
import org.apache.solr.schema.IndexSchema;
|
||||||
import org.apache.solr.update.SolrCoreState;
|
import org.apache.solr.update.SolrCoreState;
|
||||||
import org.apache.solr.util.DOMUtil;
|
import org.apache.solr.util.DOMUtil;
|
||||||
import org.apache.solr.util.DefaultSolrThreadFactory;
|
|
||||||
import org.apache.solr.util.FileUtils;
|
import org.apache.solr.util.FileUtils;
|
||||||
import org.apache.solr.util.SystemIdResolver;
|
import org.apache.solr.util.SystemIdResolver;
|
||||||
import org.apache.zookeeper.KeeperException;
|
import org.apache.zookeeper.KeeperException;
|
||||||
|
@ -760,9 +755,6 @@ public class CoreContainer
|
||||||
try {
|
try {
|
||||||
// Make the instanceDir relative to the cores instanceDir if not absolute
|
// Make the instanceDir relative to the cores instanceDir if not absolute
|
||||||
File idir = new File(dcore.getInstanceDir());
|
File idir = new File(dcore.getInstanceDir());
|
||||||
if (!idir.isAbsolute()) {
|
|
||||||
idir = new File(solrHome, dcore.getInstanceDir());
|
|
||||||
}
|
|
||||||
String instanceDir = idir.getPath();
|
String instanceDir = idir.getPath();
|
||||||
log.info("Creating SolrCore '{}' using instanceDir: {}",
|
log.info("Creating SolrCore '{}' using instanceDir: {}",
|
||||||
dcore.getName(), instanceDir);
|
dcore.getName(), instanceDir);
|
||||||
|
@ -973,9 +965,6 @@ public class CoreContainer
|
||||||
CoreDescriptor cd = core.getCoreDescriptor();
|
CoreDescriptor cd = core.getCoreDescriptor();
|
||||||
|
|
||||||
File instanceDir = new File(cd.getInstanceDir());
|
File instanceDir = new File(cd.getInstanceDir());
|
||||||
if (!instanceDir.isAbsolute()) {
|
|
||||||
instanceDir = new File(getSolrHome(), cd.getInstanceDir());
|
|
||||||
}
|
|
||||||
|
|
||||||
log.info("Reloading SolrCore '{}' using instanceDir: {}",
|
log.info("Reloading SolrCore '{}' using instanceDir: {}",
|
||||||
cd.getName(), instanceDir.getAbsolutePath());
|
cd.getName(), instanceDir.getAbsolutePath());
|
||||||
|
@ -1283,7 +1272,7 @@ public class CoreContainer
|
||||||
|
|
||||||
coreAttribs.put(CORE_NAME, coreName);
|
coreAttribs.put(CORE_NAME, coreName);
|
||||||
|
|
||||||
String instanceDir = dcore.getInstanceDir();
|
String instanceDir = dcore.getRawInstanceDir();
|
||||||
addCoreProperty(coreAttribs, coreNode, CORE_INSTDIR, instanceDir, null);
|
addCoreProperty(coreAttribs, coreNode, CORE_INSTDIR, instanceDir, null);
|
||||||
|
|
||||||
// write config
|
// write config
|
||||||
|
|
|
@ -130,10 +130,24 @@ public class CoreDescriptor {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**@return the core instance directory. */
|
/**@return the core instance directory. */
|
||||||
public String getInstanceDir() {
|
public String getRawInstanceDir() {
|
||||||
return instanceDir;
|
return this.instanceDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return the core instance directory, prepended with solr_home if not an absolute path.
|
||||||
|
*/
|
||||||
|
public String getInstanceDir() {
|
||||||
|
String instDir = this.instanceDir;
|
||||||
|
if (instDir == null) return null; // No worse than before.
|
||||||
|
|
||||||
|
if (new File(instDir).isAbsolute()) {
|
||||||
|
return SolrResourceLoader.normalizeDir(SolrResourceLoader.normalizeDir(instanceDir));
|
||||||
|
}
|
||||||
|
return SolrResourceLoader.normalizeDir(coreContainer.getSolrHome() +
|
||||||
|
SolrResourceLoader.normalizeDir(instDir));
|
||||||
|
}
|
||||||
/**Sets the core configuration resource name. */
|
/**Sets the core configuration resource name. */
|
||||||
public void setConfigName(String name) {
|
public void setConfigName(String name) {
|
||||||
if (name == null || name.length() == 0)
|
if (name == null || name.length() == 0)
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class SnapShooter {
|
||||||
solrCore = core;
|
solrCore = core;
|
||||||
if (location == null) snapDir = core.getDataDir();
|
if (location == null) snapDir = core.getDataDir();
|
||||||
else {
|
else {
|
||||||
File base = new File(core.getCoreDescriptor().getInstanceDir());
|
File base = new File(core.getCoreDescriptor().getRawInstanceDir());
|
||||||
snapDir = org.apache.solr.util.FileUtils.resolvePath(base, location).getAbsolutePath();
|
snapDir = org.apache.solr.util.FileUtils.resolvePath(base, location).getAbsolutePath();
|
||||||
File dir = new File(snapDir);
|
File dir = new File(snapDir);
|
||||||
if (!dir.exists()) dir.mkdirs();
|
if (!dir.exists()) dir.mkdirs();
|
||||||
|
|
Loading…
Reference in New Issue