[
https://issues.apache.org/jira/browse/HADOOP-20064?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HADOOP-20064:
------------------------------------
Labels: pull-request-available (was: )
> FileUtil#copy ignores a failed child copy and deletes the source directory
> when deleteSource is true
> ----------------------------------------------------------------------------------------------------
>
> Key: HADOOP-20064
> URL: https://issues.apache.org/jira/browse/HADOOP-20064
> Project: Hadoop Common
> Issue Type: Bug
> Components: fs
> Reporter: Yang Jie
> Priority: Major
> Labels: pull-request-available
>
> The recursive FileUtil#copy overloads (FileSystem to FileSystem, File to
> FileSystem, FileSystem to File) copy each entry of a directory and ignore the
> boolean that the copy of the entry returns. An entry returns false when
> creating its destination directory fails without an exception, for example
> when mkdirs returns false for permission denied on the local file system, or
> when an FTP server refuses it. The parent goes on, returns true and, with
> deleteSource=true, deletes the whole source directory.
> Example: {{hdfs.moveToLocalFile(/warehouse/t, /data/export)}} where
> /data/export/t already exists and is not writable, and /warehouse/t only
> contains partition directories. Every child mkdirs fails, nothing is copied,
> and /warehouse/t is deleted permanently (delete does not use the trash). The
> same code is used by LocalFileSystem#moveFromLocalFile and by the copy
> fallback of RawLocalFileSystem#rename.
> The fix copies the remaining entries, remembers the failure, and returns
> false before deleting the source directory, like copy(Path[]) in the same
> class does for a failed source. Entries that were copied are still moved; the
> failed entry and the directory itself are kept.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]