[ https://issues.apache.org/jira/browse/HADOOP-9805?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14387356#comment-14387356 ]
Colin Patrick McCabe commented on HADOOP-9805: ---------------------------------------------- {code} 366 // Enforce POSIX rename behavior that a source directory replaces an 367 // existing destination if the destination is an empty directory. On most 368 // platforms, this is already handled by the Java API call above. Some 369 // platforms (notably Windows) do not provide this behavior, so the Java API 370 // call renameTo(dstFile) fails. Delete destination and attempt rename 371 // again. {code} This code should not be needed on UNIX, right? This should be inside an {{if (Shell.WINDOWS)}} block. This also contains a small race condition where if the rename fails due to an existing file, but that file is deleted by another thread in between the rename and the call to {{File#exists}}, we will erroneously return {{false}}. Of course this bug is Windows-specific and we could easily fix it in a follow-on JIRA (probably via JNI code). > 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 > > > {{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)