[
https://issues.apache.org/jira/browse/HDFS-5546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13830353#comment-13830353
]
Colin Patrick McCabe commented on HDFS-5546:
--------------------------------------------
{code}
@@ -86,7 +87,11 @@ protected void processOptions(LinkedList<String> args)
protected void processPathArgument(PathData item) throws IOException {
// implicitly recurse once for cmdline directories
if (dirRecurse && item.stat.isDirectory()) {
- recursePath(item);
+ try {
+ recursePath(item);
+ } catch (FileNotFoundException e){
+ displayError(e);
+ }
} else {
super.processPathArgument(item);
}
{code}
This will result in the first moved/removed file aborting the entire recursive
ls with an error message. Basically, the same behavior as now, only with a
process exit code of 0 rather than nonzero. That's not what we want.
> 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
> Priority: Minor
> Attachments: HDFS-5546.1.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.1#6144)