You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2017/01/03 22:35:53 UTC
lucene-solr:branch_6x: SOLR-9902: StandardDirectoryFactory should use
Files API for it's move implementation.
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6x 0ab1ddb31 -> cbf96e0d7
SOLR-9902: StandardDirectoryFactory should use Files API for it's move implementation.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cbf96e0d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cbf96e0d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cbf96e0d
Branch: refs/heads/branch_6x
Commit: cbf96e0d7572a28141226d92f978b8aef8bd2509
Parents: 0ab1ddb
Author: markrmiller <ma...@apache.org>
Authored: Tue Jan 3 17:35:35 2017 -0500
Committer: markrmiller <ma...@apache.org>
Committed: Tue Jan 3 17:35:45 2017 -0500
----------------------------------------------------------------------
solr/CHANGES.txt | 1 +
.../solr/core/StandardDirectoryFactory.java | 20 +++++++++++---------
2 files changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbf96e0d/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 6d0ecc8..8cb645c 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -172,6 +172,7 @@ Optimizations
resulting in less produced garbage and 5-7% better performance.
(yonik)
+* SOLR-9902: StandardDirectoryFactory should use Files API for it's move implementation. (Mark Miller)
Bug Fixes
----------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbf96e0d/solr/core/src/java/org/apache/solr/core/StandardDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/StandardDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/StandardDirectoryFactory.java
index b24be14..1d8793a 100644
--- a/solr/core/src/java/org/apache/solr/core/StandardDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/StandardDirectoryFactory.java
@@ -129,13 +129,14 @@ public class StandardDirectoryFactory extends CachingDirectoryFactory {
Directory baseToDir = getBaseDir(toDir);
if (baseFromDir instanceof FSDirectory && baseToDir instanceof FSDirectory) {
- File dir1 = ((FSDirectory) baseFromDir).getDirectory().toFile();
- File dir2 = ((FSDirectory) baseToDir).getDirectory().toFile();
- File indexFileInTmpDir = new File(dir1, fileName);
- File indexFileInIndex = new File(dir2, fileName);
- boolean success = indexFileInTmpDir.renameTo(indexFileInIndex);
- if (success) {
- return;
+
+ Path path1 = ((FSDirectory) baseFromDir).getDirectory().toAbsolutePath();
+ Path path2 = ((FSDirectory) baseFromDir).getDirectory().toAbsolutePath();
+
+ try {
+ Files.move(path1.resolve(fileName), path2.resolve(fileName), StandardCopyOption.ATOMIC_MOVE);
+ } catch (AtomicMoveNotSupportedException e) {
+ Files.move(path1.resolve(fileName), path2.resolve(fileName));
}
}
@@ -148,8 +149,9 @@ public class StandardDirectoryFactory extends CachingDirectoryFactory {
if (baseDir instanceof FSDirectory) {
Path path = ((FSDirectory) baseDir).getDirectory().toAbsolutePath();
try {
- Files.move(FileSystems.getDefault().getPath(path.toString(), fileName),
- FileSystems.getDefault().getPath(path.toString(), toName), StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING);
+ Files.move(path.resolve(fileName),
+ path.resolve(toName), StandardCopyOption.ATOMIC_MOVE,
+ StandardCopyOption.REPLACE_EXISTING);
} catch (AtomicMoveNotSupportedException e) {
Files.move(FileSystems.getDefault().getPath(path.toString(), fileName),
FileSystems.getDefault().getPath(path.toString(), toName), StandardCopyOption.REPLACE_EXISTING);