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

Jason Lowe commented on HADOOP-9912:
------------------------------------

bq. Another crazy thought I'd like to throw out - what if we just returned 
false for isDir if we cannot resolve the symlink rather than throw an exception?

This sounds equivalent to the earlier proposal where "bad" symlinks are 
returned as the raw symlink.  isDir() and isFile() both return false for 
symlinks, and old clients are not aware of isFile() since it was added with 
symlink support.

An old client of listStatus will interpret the link as a file since isDir() is 
false, but we don't know if that's the proper thing to do since we don't know 
the client's intent.  If a directory walker is concerned about directories and 
not files at some point in the traverse, it could end up silently skipping a 
"bad" symlink when it should have failed.  i.e.: symlink to directory in remote 
filesystem but filesystem is temporarily unavailable, symlink to directory in 
permission-protected tree, symlink intended to point to a directory but typo'd 
the target when link was created, etc.

I'm not sure how common that case really is in practice.  Our recent proposal 
is trying to err on the side of caution so we don't accidentally drop data when 
we should have failed.  It does mean some scenarios for old clients will fail 
when they should have succeeded despite "bad" symlinks, but it seems better to 
report a failure that can be corrected (i.e.: fix the "bad" symlink and re-run 
the app) than to potentially skip desired inputs.
                
> globStatus of a symlink to a directory does not report symlink as a directory
> -----------------------------------------------------------------------------
>
>                 Key: HADOOP-9912
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9912
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 2.1.0-beta
>            Reporter: Jason Lowe
>            Priority: Blocker
>         Attachments: HADOOP-9912-testcase.patch, new-hdfs.txt, new-local.txt, 
> old-hdfs.txt, old-local.txt
>
>
> globStatus for a path that is a symlink to a directory used to report the 
> resulting FileStatus as a directory but recently this has changed.

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