mirror of https://github.com/apache/lucene.git
SOLR-4751: fix replication problem of files in sub directory of conf
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1483620 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
069387266e
commit
420bb8c36e
|
@ -184,7 +184,9 @@ Bug Fixes
|
|||
* SOLR-4829: Fix transaction log leaks (a failure to clean up some old logs)
|
||||
on a shard leader, or when unexpected exceptions are thrown during log
|
||||
recovery. (Steven Bower, Mark Miller, yonik)
|
||||
|
||||
|
||||
* SOLR-4751: Fix replication problem of files in sub directory of conf directory.
|
||||
(Minoru Osuka via Koji)
|
||||
|
||||
Other Changes
|
||||
----------------------
|
||||
|
|
|
@ -797,22 +797,54 @@ public class SnapPuller {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make file list
|
||||
*/
|
||||
private List<File> makeTmpConfDirFileList(File dir, List<File> fileList) {
|
||||
File[] files = dir.listFiles();
|
||||
for (File file : files) {
|
||||
if (file.isFile()) {
|
||||
fileList.add(file);
|
||||
} else if (file.isDirectory()) {
|
||||
fileList = makeTmpConfDirFileList(file, fileList);
|
||||
}
|
||||
}
|
||||
return fileList;
|
||||
}
|
||||
|
||||
/**
|
||||
* The conf files are copied to the tmp dir to the conf dir. A backup of the old file is maintained
|
||||
*/
|
||||
private void copyTmpConfFiles2Conf(File tmpconfDir) {
|
||||
boolean status = false;
|
||||
File confDir = new File(solrCore.getResourceLoader().getConfigDir());
|
||||
for (File file : tmpconfDir.listFiles()) {
|
||||
File oldFile = new File(confDir, file.getName());
|
||||
for (File file : makeTmpConfDirFileList(tmpconfDir, new ArrayList<File>())) {
|
||||
File oldFile = new File(confDir, file.getPath().substring(tmpconfDir.getPath().length(), file.getPath().length()));
|
||||
if (!oldFile.getParentFile().exists()) {
|
||||
status = oldFile.getParentFile().mkdirs();
|
||||
if (status) {
|
||||
} else {
|
||||
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
|
||||
"Unable to mkdirs: " + oldFile.getParentFile());
|
||||
}
|
||||
}
|
||||
if (oldFile.exists()) {
|
||||
File backupFile = new File(confDir, oldFile.getName() + "." + getDateAsStr(new Date(oldFile.lastModified())));
|
||||
boolean status = oldFile.renameTo(backupFile);
|
||||
File backupFile = new File(oldFile.getPath() + "." + getDateAsStr(new Date(oldFile.lastModified())));
|
||||
if (!backupFile.getParentFile().exists()) {
|
||||
status = backupFile.getParentFile().mkdirs();
|
||||
if (status) {
|
||||
} else {
|
||||
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
|
||||
"Unable to mkdirs: " + backupFile.getParentFile());
|
||||
}
|
||||
}
|
||||
status = oldFile.renameTo(backupFile);
|
||||
if (!status) {
|
||||
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
|
||||
"Unable to rename: " + oldFile + " to: " + backupFile);
|
||||
}
|
||||
}
|
||||
boolean status = file.renameTo(oldFile);
|
||||
status = file.renameTo(oldFile);
|
||||
if (status) {
|
||||
} else {
|
||||
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
|
||||
|
|
Loading…
Reference in New Issue