[ 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