hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Nauroth (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-9805) Refactor RawLocalFileSystem#rename for improved testability.
Date Wed, 01 Apr 2015 22:23:56 GMT

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

public final boolean handleEmptyDstDirectoryOnWindows(Path src, File srcFile, Path dst, File
dstFile) throws IOException

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

View raw message