[
https://issues.apache.org/jira/browse/HADOOP-8849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13557219#comment-13557219
]
Hudson commented on HADOOP-8849:
--------------------------------
Integrated in Hadoop-Mapreduce-trunk #1317 (See
[https://builds.apache.org/job/Hadoop-Mapreduce-trunk/1317/])
HADOOP-8849. FileUtil#fullyDelete should grant the target directories +rwx
permissions (Ivan A. Veselovsky via bobby) (Revision 1434868)
Result = FAILURE
bobby : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1434868
Files :
* /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
*
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java
*
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java
> FileUtil#fullyDelete should grant the target directories +rwx permissions
> before trying to delete them
> ------------------------------------------------------------------------------------------------------
>
> Key: HADOOP-8849
> URL: https://issues.apache.org/jira/browse/HADOOP-8849
> Project: Hadoop Common
> Issue Type: Improvement
> Affects Versions: 3.0.0, 2.0.3-alpha, 0.23.6
> Reporter: Ivan A. Veselovsky
> Assignee: Ivan A. Veselovsky
> Priority: Minor
> Fix For: 3.0.0, 2.0.3-alpha, 0.23.7
>
> Attachments: HADOOP-8849-trunk--5.patch, HADOOP-8849-vs-trunk-4.patch
>
>
> 2 improvements are suggested for implementation of methods
> org.apache.hadoop.fs.FileUtil.fullyDelete(File) and
> org.apache.hadoop.fs.FileUtil.fullyDeleteContents(File):
>
> 1) We should grant +rwx permissions the target directories before trying to
> delete them.
> The mentioned methods fail to delete directories that don't have read or
> execute permissions.
> Actual problem appears if an hdfs-related test is timed out (with a short
> timeout like tens of seconds), and the forked test process is killed, some
> directories are left on disk that are not readable and/or executable. This
> prevents next tests from being executed properly because these directories
> cannot be deleted with FileUtil#fullyDelete(), so many subsequent tests fail.
> So, its recommended to grant the read, write, and execute permissions the
> directories whose content is to be deleted.
> 2) Generic reliability improvement: we shouldn't rely upon File#delete()
> return value, use File#exists() instead.
> FileUtil#fullyDelete() uses return value of method java.io.File#delete(), but
> this is not reliable because File#delete() returns true only if the file was
> deleted as a result of the #delete() method invocation. E.g. in the following
> code
> if (f.exists()) { // 1
> return f.delete(); // 2
> }
> if the file f was deleted by another thread or process between calls "1" and
> "2", this fragment will return "false", while the file f does not exist upon
> the method return.
> So, better to write
> if (f.exists()) {
> f.delete();
> return !f.exists();
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira