[ 
https://issues.apache.org/jira/browse/HDFS-5546?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lei (Eddy) Xu updated HDFS-5546:
--------------------------------

    Fix Version/s: 3.0.0
           Status: Patch Available  (was: Open)

This patch catches FileNotFound exception during {{ls}} execution and ignores 
it, to handle a case that there is deletion in the sub-namespace. Unit tests 
are included.

It is a _best effort_ to finish the `ls` execution. Thus it could not discover 
newly changes on the directory that is currently being iterated. E.g., the case 
of renaming {{/foo/bar}} to {{/foo/zoo}}, when running {{ls /foo}} is not 
handled. That is, in such case, {{/foo/bar}} is considered _deleted_, but the 
{{/foo/zoo}} is not visible to the current execution.

> 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: Kousuke Saruta
>            Priority: Minor
>             Fix For: 3.0.0
>
>         Attachments: HDFS-5546.1.patch, HDFS-5546.2.000.patch, 
> HDFS-5546.2.001.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