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

Colin Patrick McCabe commented on HADOOP-9972:
----------------------------------------------

Proposed new APIs (in FileSystem and FileContext):
{code}
FileStatus[] listStatus(Path path, PathOptions options) throws IOException;
FileStatus[] globStatus(Path path, PathOptions options) throws IOException;
{code}

The {{PathOptions}} class will contain three fields:
{code}
  private PathFilter pathFilter;
  private PathErrorHandler errorHandler;
  private Boolean resolveSymlinks;
{code}

{{PathFilter}} serves the same purpose that it currently does-- filtering out 
paths from the results.

{{PathErrorHandler}} has a {{handleError}} function taking a {{Path}} and 
{{IOException}}.  This function gets invoked whenever there is an IOException.  
It can choose to rethrow the exception,  log the exception and continue, or 
simply ignore it completely.

{{resolveSymlinks}} determines whether we should fully resolve all symlinks 
that we come across.  If it is set, we will never get back a FileStatus for a 
symlink from either {{listStatus}} or {{globStatus}}.

We can add more fields to {{PathOptions}} later if it becomes necessary.
                
> new APIs for listStatus and globStatus to deal with symlinks
> ------------------------------------------------------------
>
>                 Key: HADOOP-9972
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9972
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs
>    Affects Versions: 2.1.1-beta
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>
> Based on the discussion in HADOOP-9912, we need new APIs for FileSystem to 
> deal with symlinks.  The issue is that code has been written which is 
> incompatible with the existence of things which are not files or directories. 
>  For example,
> there is a lot of code out there that looks at FileStatus#isFile, and
> if it returns false, assumes that what it is looking at is a
> directory.  In the case of a symlink, this assumption is incorrect.
> It seems reasonable to make the default behavior of {{FileSystem#listStatus}} 
> and {{FileSystem#globStatus}} be fully resolving symlinks, and ignoring 
> dangling ones.  This will prevent incompatibility with existing MR jobs and 
> other HDFS users.  We should also add new versions of listStatus and 
> globStatus that allow new, symlink-aware code to deal with symlinks as 
> symlinks.

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