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