[ 
https://issues.apache.org/jira/browse/HDFS-4142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13490785#comment-13490785
 ] 

Colin Patrick McCabe commented on HDFS-4142:
--------------------------------------------

The UNIX {{mv}} command seems to prompt in this scenario, unless {{\-f}} is 
specified.  If we change {{hadoop fs -mv}} to do the same thing, we should 
prompt as well.
                
> hadoop fs -mv command creates nested directory instead of overwriting when a 
> same named directory as source already exists
> --------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-4142
>                 URL: https://issues.apache.org/jira/browse/HDFS-4142
>             Project: Hadoop HDFS
>          Issue Type: Bug
>         Environment: hadoop 0.23.4
>            Reporter: Arup Malakar
>         Attachments: RenameTest.java
>
>
> Using the hadoop cli when I try to move a directory to another directory, if 
> the target directory contains a directory with the same name as the source 
> directory, it would create nested directories instead of overwriting it. This 
> seems counter intuitive as this is not the behavior with unix mv command. 
> Here is an example to explain the bug:
> {code}
> ~ $ hadoop fs -lsr /tmp/root
> lsr: DEPRECATED: Please use 'ls -R' instead.
> drwx------   - malakar hdfs          0 2012-11-01 23:30 /tmp/root/parent
> drwx------   - malakar hdfs          0 2012-11-01 23:30 /tmp/root/parent/child
> -rw-------   3 malakar hdfs       9950 2012-11-01 23:30 
> /tmp/root/parent/child/passwd
> drwx------   - malakar hdfs          0 2012-11-01 23:31 /tmp/root/parent2
> drwx------   - malakar hdfs          0 2012-11-01 23:31 
> /tmp/root/parent2/child
> ~ $ hadoop fs -mv /tmp/root/parent/child /tmp/root/parent2
> ~ $ hadoop fs -lsr /tmp/root
> lsr: DEPRECATED: Please use 'ls -R' instead.
> drwx------   - malakar hdfs          0 2012-11-01 23:32 /tmp/root/parent
> drwx------   - malakar hdfs          0 2012-11-01 23:31 /tmp/root/parent2
> drwx------   - malakar hdfs          0 2012-11-01 23:32 
> /tmp/root/parent2/child
> drwx------   - malakar hdfs          0 2012-11-01 23:30 
> /tmp/root/parent2/child/child
> -rw-------   3 malakar hdfs       9950 2012-11-01 23:30 
> /tmp/root/parent2/child/child/passwd
> {code}
> The same operation seems to fail when using the 
> [FileSystem|http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html#rename(org.apache.hadoop.fs.Path,
>  org.apache.hadoop.fs.Path)] rename api  though.
> Using the java api:
> {code}
> ~ $ hadoop jar test.jar RenameTest
> Before:
> drwx------   - malakar hdfs          0 2012-11-02 00:23 /tmp/renametest/parent
> drwx------   - malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/parent/child
> -rw-------   3 malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/parent/child/file
> drwx------   - malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/targetparent
> About to move: /tmp/renametest/parent/child to: /tmp/renametest/targetparent
> After moving: /tmp/renametest/parent/child to /tmp/renametest/targetparent
> drwx------   - malakar hdfs          0 2012-11-02 00:23 /tmp/renametest/parent
> drwx------   - malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/targetparent
> drwx------   - malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/targetparent/child
> -rw-------   3 malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/targetparent/child/file
> Before:
> drwx------   - malakar hdfs          0 2012-11-02 00:23 /tmp/renametest/parent
> drwx------   - malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/parent/child
> -rw-------   3 malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/parent/child/file
> drwx------   - malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/targetparent
> drwx------   - malakar hdfs          0 2012-11-02 00:23 
> /tmp/renametest/targetparent/child
> About to move: /tmp/renametest/parent/child to: /tmp/renametest/targetparent
> Could not rename directory: /tmp/renametest/parent/child to 
> /tmp/renametest/targetparent
> {code}

--
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

Reply via email to