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