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