You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Chuan Liu (JIRA)" <ji...@apache.org> on 2013/08/20 19:26:53 UTC

[jira] [Commented] (HADOOP-9887) globStatus does not correctly handle paths starting with a drive spec on Windows

    [ https://issues.apache.org/jira/browse/HADOOP-9887?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13745158#comment-13745158 ] 

Chuan Liu commented on HADOOP-9887:
-----------------------------------

I did some initial investigation on the issue.

I think the patch in HADOOP-9817 did not have the following check in the original {{FileSystem#globStatusInternal()}} method. The new relevant code is in {{Globber#glob()}}. As a result, Windows paths beginning with a drive letter no longer work with globStatus() method.

{code:java}
    // determine starting point
    int level = 0;
    String baseDir = Path.CUR_DIR;
    if (pathPattern.isAbsolute()) {
      level = 1; // need to skip empty item at beginning of split list
      baseDir = Path.SEPARATOR;
    }
{code}

I am not sure why we need the above check for Unix in original {{FileSystem#globStatusInternal()}} method. However, it does help to skip the drive letter that may appear in a Windows path. Without the equivalent logic, the code follows will fail for a path that begins with drive letter. 1) We divide the path into "components" separated by path separator; 2) we begin list from root, and add file/directory that matches the "component" for each "component" in the "components" list to the candidate list. For path begins with drive letter, the code will think the drive letter as some path on root directory; thus leads to the failure.
                
> globStatus does not correctly handle paths starting with a drive spec on Windows
> --------------------------------------------------------------------------------
>
>                 Key: HADOOP-9887
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9887
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 3.0.0, 2.3.0
>            Reporter: Chris Nauroth
>
> Recent file system changes have caused globStatus to stop working for paths starting with a drive spec on Windows.  The problem is most easily visible by running {{TestFileUtil#createJarWithClassPath}} on Windows.  This method attempts a globStatus with pattern {{*\{.jar,.JAR\}}}, and it no longer correctly identifies files at the path ending in .jar or .JAR.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira