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

Daryn Sharp commented on HDFS-5546:
-----------------------------------

{{displayError}} does not terminate the operation.  It just prints the 
exception.  The even numbered directories are listed because they existed at 
the time the {{listStatus}} returned.  This is expected behavior so there's no 
need to re-test existence before displaying.  As Colin pointed out, ls is not 
and cannot be a perfect snapshot in time.

The current patch prints an awkward warning (non-posix warning - *nix ls 
doesn't display this) when a command line path is removed.  That's inconsistent 
with the non-race output when the path never existed.  All that's needed is the 
first patch tweaked to catch IOE, not just FNF because it's not the only 
exception that may occur.  This will make ls consistent with all other commands.

> race condition crashes "hadoop ls -R" when directories are moved/removed
> ------------------------------------------------------------------------
>
>                 Key: HDFS-5546
>                 URL: https://issues.apache.org/jira/browse/HDFS-5546
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.2.0
>            Reporter: Colin Patrick McCabe
>            Assignee: Lei (Eddy) Xu
>            Priority: Minor
>             Fix For: 3.0.0
>
>         Attachments: HDFS-5546.1.patch, HDFS-5546.2.000.patch, 
> HDFS-5546.2.001.patch, HDFS-5546.2.002.patch, HDFS-5546.2.003.patch
>
>
> This seems to be a rare race condition where we have a sequence of events 
> like this:
> 1. org.apache.hadoop.shell.Ls calls DFS#getFileStatus on directory D.
> 2. someone deletes or moves directory D
> 3. org.apache.hadoop.shell.Ls calls PathData#getDirectoryContents(D), which 
> calls DFS#listStatus(D). This throws FileNotFoundException.
> 4. ls command terminates with FNF



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to