[
https://issues.apache.org/jira/browse/HDFS-8673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14606119#comment-14606119
]
Steve Loughran commented on HDFS-8673:
--------------------------------------
# yes, create a new JIRA. Something like a {{-direct}} flag would seem a good,
simple way.
# regarding the new patch, I'd still like to see the error text in a constant,
e.g
{code}
String FILE_EXISTS_MESSAGE = "Upload failed: there is a file/directory "
+"called "%s._COPYING_ in the destination "
+"FileSystem. ;
{code}
The exception would become
{code}
throw new FileAlreadyExistsException(String.format(FILE_EXISTS_MESSAGE,
target))
{code}
and the test chec
{code}
String check = String.format(FILE_EXISTS_MESSAGE, target)
{code}
Otherwise, patch looks good
> HDFS reports file already exists if there is a file/dir name end with
> ._COPYING_
> --------------------------------------------------------------------------------
>
> Key: HDFS-8673
> URL: https://issues.apache.org/jira/browse/HDFS-8673
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: fs
> Affects Versions: 2.7.0
> Reporter: Chen He
> Attachments: HDFS-8673.000-WIP.patch, HDFS-8673.000.patch,
> HDFS-8673.001.patch
>
>
> Because CLI is using CommandWithDestination.java which add "._COPYING_" to
> the tail of file name when it does the copy. It will cause problem if there
> is a file/dir already called *._COPYING_ on HDFS.
> For file:
> -bash-4.1$ hadoop fs -put 5M /user/occ/
> -bash-4.1$ hadoop fs -mv /user/occ/5M /user/occ/5M._COPYING_
> -bash-4.1$ hadoop fs -ls /user/occ/
> Found 1 items
> -rw-r--r-- 1 occ supergroup 5242880 2015-06-26 05:16
> /user/occ/5M._COPYING_
> -bash-4.1$ hadoop fs -put 128K /user/occ/5M
> -bash-4.1$ hadoop fs -ls /user/occ/
> Found 1 items
> -rw-r--r-- 1 occ supergroup 131072 2015-06-26 05:19 /user/occ/5M
> For dir:
> -bash-4.1$ hadoop fs -mkdir /user/occ/5M._COPYING_
> -bash-4.1$ hadoop fs -ls /user/occ/
> Found 1 items
> drwxr-xr-x - occ supergroup 0 2015-06-26 05:24
> /user/occ/5M._COPYING_
> -bash-4.1$ hadoop fs -put 128K /user/occ/5M
> put: /user/occ/5M._COPYING_ already exists as a directory
> -bash-4.1$ hadoop fs -ls /user/occ/
> (/user/occ/5M._COPYING_ is gone)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)