You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ko...@apache.org on 2013/05/10 14:07:29 UTC
svn commit: r1480988 - in /lucene/dev/trunk/solr: CHANGES.txt
core/src/java/org/apache/solr/handler/SnapPuller.java
Author: koji
Date: Fri May 10 12:07:29 2013
New Revision: 1480988
URL: http://svn.apache.org/r1480988
Log:
SOLR-4751: fix replication problem of files in sub directory of conf
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1480988&r1=1480987&r2=1480988&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri May 10 12:07:29 2013
@@ -154,6 +154,9 @@ Bug Fixes
range in cluster state. This happens when numShards is not a power of two
and router is compositeId. (shalin)
+* SOLR-4751: Fix replication problem of files in sub directory of conf directory.
+ (Minoru Osuka via Koji Sekiguchi)
+
Other Changes
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java?rev=1480988&r1=1480987&r2=1480988&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java Fri May 10 12:07:29 2013
@@ -798,14 +798,29 @@ public class SnapPuller {
}
/**
+ * 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) {
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.exists()) {
- File backupFile = new File(confDir, oldFile.getName() + "." + getDateAsStr(new Date(oldFile.lastModified())));
+ File backupFile = new File(oldFile.getPath() + "." + getDateAsStr(new Date(oldFile.lastModified())));
boolean status = oldFile.renameTo(backupFile);
if (!status) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,