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