Chris Nauroth created HADOOP-12550:
--------------------------------------

             Summary: 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


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

Reply via email to