[ 
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 one.

> FileSystem#mkdirs(FileSystem, Path, FsPermission) should not call 
> setPermission if mkdirs failled
> -------------------------------------------------------------------------------------------------
>
>                 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.

Reply via email to