hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Nauroth (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-9507) LocalFileSystem rename() is broken in some cases when destination exists
Date Fri, 26 Jul 2013 16:59:49 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-9507?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13720955#comment-13720955

Chris Nauroth commented on HADOOP-9507:

Thank you, everyone, for the great code reviews on this patch.

[~szetszwo], are you still +1 for the patch with the change suggested by Arpit to use non-recursive
delete?  If so, then I'd like to commit today.  It's a one-line change since last time (see
incremental diff below).  Thanks!

diff --git hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
index 2553880..dbe29a2 100644
--- hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
+++ hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
@@ -338,7 +338,7 @@ public boolean rename(Path src, Path dst) throws IOException {
           LOG.debug("Deleting empty destination and renaming " + src + " to " +
-        if (this.delete(dst, true) && srcFile.renameTo(dstFile)) {
+        if (this.delete(dst, false) && srcFile.renameTo(dstFile)) {
           return true;

> LocalFileSystem rename() is broken in some cases when destination exists
> ------------------------------------------------------------------------
>                 Key: HADOOP-9507
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9507
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 3.0.0, 1-win, 2.1.0-beta, 1.3.0
>            Reporter: Mostafa Elhemali
>            Assignee: Chris Nauroth
>            Priority: Minor
>         Attachments: HADOOP-9507-branch-1.1.patch, HADOOP-9507-branch-1.3.patch, HADOOP-9507-branch-1.4.patch,
HADOOP-9507-branch-1.5.patch, HADOOP-9507-branch-1-win.1.patch, HADOOP-9507-branch-1-win.3.patch,
HADOOP-9507-branch-1-win.4.patch, HADOOP-9507-branch-1-win.5.patch, HADOOP-9507.branch-1-win.patch,
HADOOP-9507-trunk.1.patch, HADOOP-9507-trunk.2.patch, HADOOP-9507-trunk.3.patch, HADOOP-9507-trunk.4.patch,
> The rename() method in RawLocalFileSystem uses FileUtil.copy() without realizing that
FileUtil.copy() has a special behavior that if you're copying /foo to /bar and /bar exists
and is a directory, it'll copy /foo inside /bar instead of overwriting it, which is not what
rename() wants. So you end up with weird behaviors like in this repro:
> {code}
> c:
> cd \
> md Foo
> md Bar
> md Foo\X
> md Bar\X
> hadoop fs -mv file:///c:/Foo file:///c:/Bar
> {code}
> At the end of this, you would expect to find only Bar\X, but you instead find Bar\X\X.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message