[
https://issues.apache.org/jira/browse/HDFS-5546?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Lei (Eddy) Xu updated HDFS-5546:
--------------------------------
Attachment: HDFS-5546.2.003.patch
This patch absorts FNF exception but in the end, it prints out a warning
message to suggest users to re-run {{ls}}. The print format is something like
the following:
{quote}
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir0
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir1
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir2
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir3
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir4
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir5
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir6
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir7
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir8
drw-rw-rw- - test test 1024 1969-12-31 16:00 mockfs:///test/dir9
-rw-rw-rw- 1 test test 1024 1969-12-31 16:00 mockfs:///other/file
Warning: Files are deleted or renamed during running this command. Suggest to
re-run this command.
{quote}
Actually, all {{/test/dir#<even_num>}} are deleted, but they are printed
anyway. The reason is that {{ls}} firstly prints out the current directory,
then jumps into the sub-directory recursively, there is no cheap way to test
the existence of the current directory before printing its information.
I think in this case, we should not directly catch IOExecption and
{{displayError(e)}}. {{LS}} command should be tolerate this scenario without
generating too much noise.
> 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)