[ https://issues.apache.org/jira/browse/HADOOP-12550?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris Nauroth updated HADOOP-12550: ----------------------------------- Status: Open (was: Patch Available) [~xyao], thank you for reviewing. I had missed that point in the MSDN doc. Oddly, it seems to work anyway, because I have run tests that cover a directory rename through {{NativeIO#renameTo}}. Even still, I wouldn't want to depend on undocumented behavior. I'm canceling the patch while I sort this out. > NativeIO#renameTo on Windows cannot replace an existing file at the > destination. > -------------------------------------------------------------------------------- > > Key: HADOOP-12550 > URL: https://issues.apache.org/jira/browse/HADOOP-12550 > Project: Hadoop Common > Issue Type: Bug > Components: native > Environment: Windows > Reporter: Chris Nauroth > Assignee: Chris Nauroth > Attachments: HADOOP-12550.001.patch, HADOOP-12550.002.patch > > > {{NativeIO#renameTo}} currently has different semantics on Linux vs. Windows > if a file already exists at the destination. On Linux, it's a passthrough to > the [rename|http://linux.die.net/man/2/rename] syscall, which will replace an > existing file at the destination. On Windows, it's a passthrough to > [MoveFile|https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396], > which cannot replace an existing file at the destination and instead > triggers an error. The easiest way to observe this difference is to run the > HDFS test {{TestRollingUpgrade#testRollback}}. This fails on Windows due to > a block recovery after truncate trying to replace a block at an existing > destination path. This issue proposes to use > [MoveFileEx|https://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx] > on Windows with the {{MOVEFILE_REPLACE_EXISTING}} flag. -- This message was sent by Atlassian JIRA (v6.3.4#6332)