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

Jing Zhao edited comment on HDFS-6562 at 6/20/14 10:11 PM:
-----------------------------------------------------------

Thanks for the refactoring, Haohui! Just finished reviewing the changes for the 
old rename. Some comments:
# Maybe we can let checkSnapshot throw a SnapshotException instead of the
  current general IOException. In this way for the old version rename, we do not
  need to check the exception msg when validating the rename source.
# Maybe we can rename RenameTransaction to RenameOperation?
# In RenameTransaction, the initialization of srcChildName, isSrcInSnapshot, and
  scrChildIsReference can be moved into the constructor so that they can still
  be declared as final.
# Since we no longer have INode replacement, we do not need to replace the last
  inode of the srcIIP. Simply calling srcChild.recordModification should be good
  enough.
{code}
      if (isSrcInSnapshot) {
        srcChild = srcChild.recordModification(srcIIP.getLatestSnapshotId());
        srcIIP.setLastINode(srcChild);
      }
{code}
# Similarly I guess we do not need the following code any more (this is in the 
new rename):
{code}
    if (dstParent.getParent() == null) {
      // src and dst file/dir are in the same directory, and the dstParent has
      // been replaced when we removed the src. Refresh the dstIIP and
      // dstParent.
      dstIIP = getINodesInPath4Write(dst, false);
    }
{code}
  And in removeLastINode(INodesInPath), we can remove the following code:
{code}
    INodeDirectory newParent = last.getParent();
    if (parent != newParent) {
      iip.setINode(-2, newParent);
    }
{code}

Will continue reviewing the new rename.



was (Author: jingzhao):
Thanks for the refactoring, Haohui! Just finished reviewing the changes for the 
old rename. Some comments:
# Maybe we can let checkSnapshot throw a SnapshotException instead of the
  current general IOException. In this way for the old version rename, we do not
  need to check the exception msg when validating the rename source.
# Maybe we can rename RenameTransaction to RenameOperation?
# In RenameTransaction, the initialization of srcChildName, isSrcInSnapshot, and
  scrChildIsReference can be moved into the constructor so that they can still
  be declared as final.
# Since we no longer have INode replacement, we do not need to replace the last
  inode of the srcIIP. Simply calling srcChild.recordModification should be good
  enough.
{code}
      if (isSrcInSnapshot) {
        srcChild = srcChild.recordModification(srcIIP.getLatestSnapshotId());
        srcIIP.setLastINode(srcChild);
      }
{code}
# Similarly I guess we do not need the following code any more:
{code}
    if (dstParent.getParent() == null) {
      // src and dst file/dir are in the same directory, and the dstParent has
      // been replaced when we removed the src. Refresh the dstIIP and
      // dstParent.
      dstIIP = getINodesInPath4Write(dst, false);
    }
{code}
  And in removeLastINode(INodesInPath), we can remove the following code:
{code}
    INodeDirectory newParent = last.getParent();
    if (parent != newParent) {
      iip.setINode(-2, newParent);
    }
{code}

Will continue reviewing the new rename.


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