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

Chris Nauroth commented on HDFS-6205:
-------------------------------------

Thank you, [~schu] for reporting this, and thank you [~sathish.gurram] for 
providing a patch.

Note that {{setfacl -x user:user1: /file1}} is valid usage.  Linux setfacl 
tolerates a trailing ':' with the -x option, so we'll want to remain consistent 
with that.  The patch has a new test that asserts failure for this case, but 
it's actually failing for a different reason (/path not found on local file 
system).  It isn't really testing this change.

I recommend writing a test that calls {{AclEntry#parseAclSpec}} directly.  
There are a few existing tests in {{TestAclCommands}} that do this, and you can 
add something similar.  That avoids accidentally testing the wrong thing due to 
local file system interactions through calling the shell command directly.

> FsShell setfacl can throw ArrayIndexOutOfBoundsException when no perm is 
> specified
> ----------------------------------------------------------------------------------
>
>                 Key: HDFS-6205
>                 URL: https://issues.apache.org/jira/browse/HDFS-6205
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 3.0.0, 2.4.0
>            Reporter: Stephen Chu
>            Assignee: sathish
>            Priority: Minor
>         Attachments: HDFS-6205.patch
>
>
> If users don't specify the perm of an acl when using the FsShell's setfacl 
> command, a fatal internal error ArrayIndexOutOfBoundsException will be thrown.
> {code}
> [root@hdfs-nfs ~]# hdfs dfs -setfacl -m user:bob: /user/hdfs/td1
> -setfacl: Fatal internal error
> java.lang.ArrayIndexOutOfBoundsException: 2
>       at 
> org.apache.hadoop.fs.permission.AclEntry.parseAclEntry(AclEntry.java:285)
>       at 
> org.apache.hadoop.fs.permission.AclEntry.parseAclSpec(AclEntry.java:221)
>       at 
> org.apache.hadoop.fs.shell.AclCommands$SetfaclCommand.processOptions(AclCommands.java:260)
>       at org.apache.hadoop.fs.shell.Command.run(Command.java:154)
>       at org.apache.hadoop.fs.FsShell.run(FsShell.java:255)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
>       at org.apache.hadoop.fs.FsShell.main(FsShell.java:308)
> [root@hdfs-nfs ~]# 
> {code}
> An improvement would be if it returned something like this:
> {code}
> [root@hdfs-nfs ~]# hdfs dfs -setfacl -m user:bob:rww /user/hdfs/td1
> -setfacl: Invalid permission in <aclSpec> : user:bob:rww
> Usage: hadoop fs [generic options] -setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} 
> <path>]|[--set <acl_spec> <path>]
> [root@hdfs-nfs ~]# 
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to