hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dick King (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-6897) FileSystem#mkdirs(FileSystem, Path, FsPermission) should not call setPermission if mkdirs failled
Date Tue, 03 Aug 2010 23:26:16 GMT

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

Dick King commented on HADOOP-6897:

There's a wierd incompatibility within the various overloads of {{FileSystem.mkdirs}} .

{{static boolean FileSystem.mkdirs(FileSystem fs, Path path, FsPermission permission)}} assigns
the specified permission to all directories constructed on the way to path , including the
last one, {{path}} itself .

{{fs.mkdirs(path, permission)}} behaves very differently.  The intermediate directories, if
any, that get created, are born with the permissions of {{permission}} , but the leaf directory,
{{path}} , seems to get its permissions set to a MASKED permission mask, at least when {{FileSystem}}
is a DFS.

At the very least, this behavior should be documented.  A better remedy, in my opinion, would
be for {{FileSystem.mkdirs(Path, FsPermission)}} to change behavior so all directories created
have permission bits named by the {{FsPermission}} parameter in all of the calls that have

> FileSystem#mkdirs(FileSystem, Path, FsPermission) should not call setPermission if mkdirs
> -------------------------------------------------------------------------------------------------
>                 Key: HADOOP-6897
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6897
>             Project: Hadoop Common
>          Issue Type: Bug
>    Affects Versions: 0.22.0
>            Reporter: Hairong Kuang
>            Assignee: Hairong Kuang
>             Fix For: 0.22.0
>         Attachments: mkdirs.patch
> Here is the piece of code that has the bug. fs.setPermission should not be called if
result is false.
> {code}
>   public static boolean mkdirs(FileSystem fs, Path dir, FsPermission permission)
>   throws IOException {
>     // create the directory using the default permission
>     boolean result = fs.mkdirs(dir);
>     // set its permission to be the supplied one
>     fs.setPermission(dir, permission);
>     return result;
>   }
> {code}

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message