You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Yutong Xiao (Jira)" <ji...@apache.org> on 2021/07/28 03:07:00 UTC

[jira] [Comment Edited] (HBASE-26001) When turn on access control, the cell level TTL of Increment and Append operations is invalid.

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

Yutong Xiao edited comment on HBASE-26001 at 7/28/21, 3:06 AM:
---------------------------------------------------------------

I run the tests with branch-2.3 locally. And got the following message :

2021-07-27 15:14:46,016 DEBUG [master/192.168.1.127:0:becomeActiveMaster] asyncfs.FanOutOneBlockAsyncDFSOutputHelper(265): ClientProtocol::create wrong number of arguments, should be hadoop 3.2 or below
2021-07-27 15:14:46,016 DEBUG [master/192.168.1.127:0:becomeActiveMaster] asyncfs.FanOutOneBlockAsyncDFSOutputHelper(271): ClientProtocol::create wrong number of arguments, should be hadoop 2.x
2021-07-27 15:14:46,029 DEBUG [master/192.168.1.127:0:becomeActiveMaster] asyncfs.FanOutOneBlockAsyncDFSOutputHelper(280): can not find SHOULD_REPLICATE flag, should be hadoop 2.x
java.lang.IllegalArgumentException: No enum constant org.apache.hadoop.fs.CreateFlag.SHOULD_REPLICATE

I also rerun the tests under branch-2 and it passed. 
It seems the tests failure is due to a version problem of hadoop. [~stack]


was (Author: xytss123):
I run the tests with branch-2.3 locally. And got the following message :

2021-07-27 15:14:46,016 DEBUG [master/192.168.1.127:0:becomeActiveMaster] asyncfs.FanOutOneBlockAsyncDFSOutputHelper(265): ClientProtocol::create wrong number of arguments, should be hadoop 3.2 or below
2021-07-27 15:14:46,016 DEBUG [master/192.168.1.127:0:becomeActiveMaster] asyncfs.FanOutOneBlockAsyncDFSOutputHelper(271): ClientProtocol::create wrong number of arguments, should be hadoop 2.x
2021-07-27 15:14:46,029 DEBUG [master/192.168.1.127:0:becomeActiveMaster] asyncfs.FanOutOneBlockAsyncDFSOutputHelper(280): can not find SHOULD_REPLICATE flag, should be hadoop 2.x
java.lang.IllegalArgumentException: No enum constant org.apache.hadoop.fs.CreateFlag.SHOULD_REPLICATE

I also rerun the tests under branch-2 and it passed. 
Maybe the tests failure are due to a version problem of hadoop. [~stack]

> When turn on access control, the cell level TTL of Increment and Append operations is invalid.
> ----------------------------------------------------------------------------------------------
>
>                 Key: HBASE-26001
>                 URL: https://issues.apache.org/jira/browse/HBASE-26001
>             Project: HBase
>          Issue Type: Bug
>          Components: Coprocessors
>            Reporter: Yutong Xiao
>            Assignee: Yutong Xiao
>            Priority: Minor
>             Fix For: 3.0.0-alpha-1, 2.6.7, 2.5.0, 2.4.5
>
>
> AccessController postIncrementBeforeWAL() and postAppendBeforeWAL() methods will rewrite the new cell's tags by the old cell's. This will makes the other kinds of tag in new cell invisible (such as TTL tag) after this. As in Increment and Append operations, the new cell has already catch forward all tags of the old cell and TTL tag from mutation operation, here in AccessController we do not need to rewrite the tags once again. Also, the TTL tag of newCell will be invisible in the new created cell. Actually, in Increment and Append operations, the newCell has already copied all tags of the oldCell. So the oldCell is useless here.
> {code:java}
> private Cell createNewCellWithTags(Mutation mutation, Cell oldCell, Cell newCell) {
>     // Collect any ACLs from the old cell
>     List<Tag> tags = Lists.newArrayList();
>     List<Tag> aclTags = Lists.newArrayList();
>     ListMultimap<String,Permission> perms = ArrayListMultimap.create();
>     if (oldCell != null) {
>       Iterator<Tag> tagIterator = PrivateCellUtil.tagsIterator(oldCell);
>       while (tagIterator.hasNext()) {
>         Tag tag = tagIterator.next();
>         if (tag.getType() != PermissionStorage.ACL_TAG_TYPE) {
>           // Not an ACL tag, just carry it through
>           if (LOG.isTraceEnabled()) {
>             LOG.trace("Carrying forward tag from " + oldCell + ": type " + tag.getType()
>                 + " length " + tag.getValueLength());
>           }
>           tags.add(tag);
>         } else {
>           aclTags.add(tag);
>         }
>       }
>     }
>     // Do we have an ACL on the operation?
>     byte[] aclBytes = mutation.getACL();
>     if (aclBytes != null) {
>       // Yes, use it
>       tags.add(new ArrayBackedTag(PermissionStorage.ACL_TAG_TYPE, aclBytes));
>     } else {
>       // No, use what we carried forward
>       if (perms != null) {
>         // TODO: If we collected ACLs from more than one tag we may have a
>         // List<Permission> of size > 1, this can be collapsed into a single
>         // Permission
>         if (LOG.isTraceEnabled()) {
>           LOG.trace("Carrying forward ACLs from " + oldCell + ": " + perms);
>         }
>         tags.addAll(aclTags);
>       }
>     }
>     // If we have no tags to add, just return
>     if (tags.isEmpty()) {
>       return newCell;
>     }
>     // Here the new cell's tags will be in visible.
>     return PrivateCellUtil.createCell(newCell, tags);
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)