[ 
https://issues.apache.org/jira/browse/HADOOP-9805?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14387356#comment-14387356
 ] 

Colin Patrick McCabe commented on HADOOP-9805:
----------------------------------------------

{code}
366         // Enforce POSIX rename behavior that a source directory replaces an
367         // existing destination if the destination is an empty directory. 
On most
368         // platforms, this is already handled by the Java API call above. 
Some
369         // platforms (notably Windows) do not provide this behavior, so the 
Java API
370         // call renameTo(dstFile) fails. Delete destination and attempt 
rename
371         // again.
{code}
This code should not be needed on UNIX, right?  This should be inside an {{if 
(Shell.WINDOWS)}} block.

This also contains a small race condition where if the rename fails due to an 
existing file, but that file is deleted by another thread in between the rename 
and the call to {{File#exists}}, we will erroneously return {{false}}.  Of 
course this bug is Windows-specific and we could easily fix it in a follow-on 
JIRA (probably via JNI code).

> Refactor RawLocalFileSystem#rename for improved testability.
> ------------------------------------------------------------
>
>                 Key: HADOOP-9805
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9805
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs, test
>    Affects Versions: 3.0.0, 1-win, 1.3.0, 2.1.1-beta
>            Reporter: Chris Nauroth
>            Assignee: Jean-Pierre Matsumoto
>            Priority: Minor
>              Labels: newbie
>         Attachments: HADOOP-9805.001.patch
>
>
> {{RawLocalFileSystem#rename}} contains fallback logic to provide POSIX rename 
> behavior on platforms where {{java.io.File#renameTo}} fails.  The method 
> returns early if {{java.io.File#renameTo}} succeeds, so test runs may not 
> cover the fallback logic depending on the platform.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to