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

Chris Nauroth commented on HADOOP-9805:
---------------------------------------

It's unfortunate that the new method has to run {{pathToFile}} on the source 
and destination again.  There is quite a bit of work behind that method call, 
and the result is already available in the scope of {{rename}}.  
I suggest that the new method accept the arguments as both {{Path}} and 
{{File}} to avoid the redundant call.  Combining that with Colin's rename 
suggestion, the signature would be:

{code}
public final boolean handleEmptyDstDirectoryOnWindows(Path src, File srcFile, 
Path dst, File dstFile) throws IOException
{code}

Admittedly, that's a strange method signature, but this is only meant to be 
visible for testing, not as a public API.  To that end, let's also mark the 
method {{final}}.

bq. Of course this bug is Windows-specific and we could easily fix it in a 
follow-on JIRA (probably via JNI code).

I'm not sure this is true.  Last time I checked, it looked like the Windows API 
did not offer any way to match the POSIX semantics exactly.  I'd be happy to be 
proven wrong though, because the current approach is admittedly not atomic.  :-)

> 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, HADOOP-9805.002.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