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

Tsz Wo Nicholas Sze commented on HDFS-6562:
-------------------------------------------

Patch looks good.  Some comments:
- Before the patch, the first if-statement below thows to an exception.  But it 
will return false after the patch.
{code}
-    if (srcInode.isSymlink() && 
-        dst.equals(srcInode.asSymlink().getSymlinkString())) {
-      throw new FileAlreadyExistsException(
-          "Cannot rename symlink "+src+" to its target "+dst);
-    }
-    
-    // dst cannot be directory or a file under src
-    if (dst.startsWith(src) && 
-        dst.charAt(src.length()) == Path.SEPARATOR_CHAR) {
-      NameNode.stateChangeLog.warn("DIR* FSDirectory.unprotectedRenameTo: "
-          + "failed to rename " + src + " to " + dst
-          + " because destination starts with src");
+
+    try {
+      validateRenameDestination(src, dst, srcInode);
+    } catch (IOException ignored) {
       return false;
     }
{code}

- prepare() should be combined with the RenameOperation constructor.  Then all 
the fields except srcChild can be changed to final.

> Refactor rename() in FSDirectory
> --------------------------------
>
>                 Key: HDFS-6562
>                 URL: https://issues.apache.org/jira/browse/HDFS-6562
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: namenode
>            Reporter: Haohui Mai
>            Assignee: Haohui Mai
>         Attachments: HDFS-6562.000.patch, HDFS-6562.001.patch, 
> HDFS-6562.002.patch, HDFS-6562.003.patch, HDFS-6562.004.patch
>
>
> Currently there are two variants of {{rename()}} sitting in {{FSDirectory}}. 
> Both implementation shares quite a bit of common code.
> This jira proposes to clean up these two variants and extract the common code.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to