HADOOP-14434. Use MoveFileEx to allow renaming a file when the destination exists. Contributed by Lukas Majercak
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ef9e536a Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ef9e536a Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ef9e536a Branch: refs/heads/YARN-5734 Commit: ef9e536a7137d209985d25a4769712c2db2c52bf Parents: eb7791b Author: Chris Douglas <cdoug...@apache.org> Authored: Wed May 17 17:21:03 2017 -0700 Committer: Chris Douglas <cdoug...@apache.org> Committed: Wed May 17 17:21:03 2017 -0700 ---------------------------------------------------------------------- .../main/native/src/org/apache/hadoop/io/nativeio/NativeIO.c | 2 +- .../test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ef9e536a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/nativeio/NativeIO.c ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/nativeio/NativeIO.c b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/nativeio/NativeIO.c index a7d4b55..242a456 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/nativeio/NativeIO.c +++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/nativeio/NativeIO.c @@ -1204,7 +1204,7 @@ done: if (!src) goto done; // exception was thrown dst = (LPCWSTR) (*env)->GetStringChars(env, jdst, NULL); if (!dst) goto done; // exception was thrown - if (!MoveFile(src, dst)) { + if (!MoveFileEx(src, dst, MOVEFILE_REPLACE_EXISTING)) { throw_ioe(env, GetLastError()); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/ef9e536a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java index b2445a3..436f10a 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java @@ -510,7 +510,7 @@ public class TestNativeIO { Assert.assertEquals(Errno.ENOENT, e.getErrno()); } } - + // Test renaming a file to itself. It should succeed and do nothing. File sourceFile = new File(TEST_DIR, "source"); Assert.assertTrue(sourceFile.createNewFile()); @@ -536,7 +536,9 @@ public class TestNativeIO { } } - FileUtils.deleteQuietly(TEST_DIR); + // Test renaming to an existing file + assertTrue(targetFile.exists()); + NativeIO.renameTo(sourceFile, targetFile); } @Test(timeout=10000) --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org