[
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)