[
https://issues.apache.org/jira/browse/HADOOP-9507?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13719326#comment-13719326
]
Tsz Wo (Nicholas), SZE commented on HADOOP-9507:
------------------------------------------------
If we use copy, it may unnecessarily copy a large amount of data. Why not
first delete the empty dst directory and then rename the src directory? Or
moving the children from src to dst. Not sure if these two methods would work
in windows.
> 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-win.1.patch, HADOOP-9507.branch-1-win.patch,
> HADOOP-9507-trunk.1.patch, HADOOP-9507-trunk.2.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