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

Eli Collins commented on HDFS-4036:
-----------------------------------

unprotectedAddFile does not throw UnresolvedLinkException because addNode 
unconditionally swallows the IOE (and ULE is a subclass of IOE) and returns 
null... 

{code}
try {
  newNode = addNode(path, newNode, UNKNOWN_DISK_SPACE);
} catch (IOException e) {
  return null;
}
{code}

This doesn't break symlinks because by the time we happen to have gotten to 
this point all the symlinks in path have already been fully resolved (otherwise 
symlinks would be broken because we hide the ULE that the client needs to get 
to resolve the link). But the issue here doesn't seem to be that we're claiming 
to throw a ULE when we don't, it's why are we unconditionally swallowing IOEs 
here w/o so much as a warning? That doesn't seem right.
                
> FSDirectory.unprotectedAddFile(..) should not throw UnresolvedLinkException
> ---------------------------------------------------------------------------
>
>                 Key: HDFS-4036
>                 URL: https://issues.apache.org/jira/browse/HDFS-4036
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: name-node
>    Affects Versions: 3.0.0
>            Reporter: Tsz Wo (Nicholas), SZE
>            Assignee: Jing Zhao
>         Attachments: HDFS-4036-trunk.001.patch
>
>
> The code in FSDirectory.unprotectedAddFile(..) does not throw 
> UnresolvedLinkException, we should remove "throws UnresolvedLinkException" 
> from the declaration.

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