[ 
https://issues.apache.org/jira/browse/HDFS-6326?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chris Nauroth updated HDFS-6326:
--------------------------------

    Attachment: HDFS-6326.3.patch

I'm attaching patch version 3.  This takes the approach of hiding the actual 
ACL bit from {{FsPermission}} serialization/deserialization.  This definitely 
hides it from clients looking directly at the permission bits (though I 
expressed a doubt earlier that there would be any such clients in reality).

The implementation is slightly different from what Daryn suggested in his last 
comment.  {{FsPermission#getAclBit}} is implemented to return false always.  
{{FsAclPermission}} overrides it to return true always.  {{FSDirectory}} uses 
{{FsAclPermission}} on outbound responses as needed.  {{PBHelper}} translates 
permission bits to either {{FsPermission}} or {{FsAclPermission}} as needed.  
In this way, the protobuf translation layer is the only place that would see an 
ACL bit turned on in the actual bytes, and we minimize the impact on the 
{{FsPermission}} code.  I've changed the WebHDFS JSON representation of 
{{FileStatus}} too to use a separate {{aclBit}} field instead of toggling it on 
in {{permission}}.

In my last comment, I expressed a concern that we don't really need this much 
complexity, but I'm willing to go with this approach if others are convinced 
that it's necessary.

> WebHdfs ACL compatibility is broken
> -----------------------------------
>
>                 Key: HDFS-6326
>                 URL: https://issues.apache.org/jira/browse/HDFS-6326
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: webhdfs
>    Affects Versions: 3.0.0, 2.4.0
>            Reporter: Daryn Sharp
>            Assignee: Chris Nauroth
>            Priority: Blocker
>         Attachments: HDFS-6326.1.patch, HDFS-6326.2.patch, HDFS-6326.3.patch
>
>
> 2.4 ACL support is completely incompatible with <2.4 webhdfs servers.  The NN 
> throws an {{IllegalArgumentException}} exception.
> {code}
> hadoop fs -ls webhdfs://nn/
> Found 21 items
> ls: Invalid value for webhdfs parameter "op": No enum constant 
> org.apache.hadoop.hdfs.web.resources.GetOpParam.Op.GETACLSTATUS
> [... 20 more times...]
> {code}



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

Reply via email to