Arup Malakar created HDFS-4142:
----------------------------------

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


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:
~ $ 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



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