[
https://issues.apache.org/jira/browse/HDFS-5614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chris Nauroth updated HDFS-5614:
--------------------------------
Attachment: HDFS-5614.2.patch
Here is v2 of this patch. The differences since v1 are:
# I fixed the duplicate {{AclFeature}} bug that I mentioned earlier. The
problem was that we were serializing an empty {{AclFeature}} into fsimage for
inodes that don't have an ACL. On reload, we'd apply that empty {{AclFeature}}
to the inode. During the next attempt to set an ACL, the ACL bit would be off,
so it would appear that there is no need to remove the feature before adding a
new one. The current HDFS-4685 code masks this problem by virtue of the fact
that {{AclFeature}} was mutable, and it could just replace the entries. To fix
this, {{FSImageSerialization}} and {{FSImageFormat}} now check the ACL bit
before writing/reading an ACL. I also enhanced an existing test case in
{{TestFSImageWithAcl}} to expose the problem.
# Thank you to [~jingzhao] who reviewed the v1 patch and spotted a bug in
{{AclStorage}}. In some cases, it was reading the {{FsPermission}} or the
{{AclStatus}} for the latest snapshot rather than the current state. For the
ACL modification APIs, we're always interested in current state and applying a
delta to that. I've corrected the code and updated some comments to clarify
when we need to use a snapshot ID and when we don't. I also added 2 tests in
{{TestAclWithSnapshot}} to demonstrate the problem:
{{testModifyReadsCurrentState}} and {{testRemoveReadsCurrentState}}.
> NameNode: implement handling of ACLs in combination with snapshots.
> -------------------------------------------------------------------
>
> Key: HDFS-5614
> URL: https://issues.apache.org/jira/browse/HDFS-5614
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Components: namenode
> Affects Versions: HDFS ACLs (HDFS-4685)
> Reporter: Chris Nauroth
> Assignee: Chris Nauroth
> Attachments: HDFS-5614.1.patch, HDFS-5614.2.patch
>
>
> Within a snapshot, all ACLs are frozen at the moment that the snapshot was
> created. ACL changes in the parent of the snapshot are not applied to the
> snapshot.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)