[
https://issues.apache.org/jira/browse/HBASE-13393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14557107#comment-14557107
]
Anoop Sam John commented on HBASE-13393:
----------------------------------------
We can do another smart way. By default we use KeyValueCodec which is not
supporting passing of tags with Cell from/to client. So when Mutation cells
come into server, we use this Codec's Decoder to read stream of bytes and
convert them to Cells. We make KeyValue objects now but we can make
NoTagsKeyValue as we are sure we are not supporting passing of tags with this
Codec. The getTagsLength() usage is cheap in this class.
Still I have a concern over using volatile int and adding tagsLength from each
Cell. We might go out of range if too many cells we hold in memstore? Rare
chance. May be we just need to keep this info as a boolean state only? This
can relax the cost of getTagsLength() with KeyValue also.
{code}
boolean isTags = false;
if(!isTags || cell.getTagsLength > 0 ){
isTags = true;
}
In a system with cells having tags (say it is visibility or per cell ACL
system) only for the 1st cell the getTagsLength has to get called. (Remember
here we are going to get KeyValue objects not NoTagsKeyValue)
Only downside is we can not do reverse op on remove(Cell). But IMO that is
ok. Let us not handle. A cell with tags was added but got removed because this
transaction got failed. All other cells in this memstore are with no tags.
Still just because of this single Cell, we will think that tags are present and
we will write 0 tags length for all the cells when we flush. But this should
be ok I believe. The scenario itself is rare that only one cell added was
having tagslength and that only got removed. Even if it happens, the next
compaction will handle and avoid tagsLength write in resulting new file.
The boolean also we can make non volatile only?
> Add facility to disable tags after parent goes in
> -------------------------------------------------
>
> Key: HBASE-13393
> URL: https://issues.apache.org/jira/browse/HBASE-13393
> Project: HBase
> Issue Type: Sub-task
> Reporter: stack
> Assignee: stack
> Attachments: HBASE-13393.patch
>
>
> We used to specify 'no tags' by choosing to write files that were version 2.
> After parent goes in, make it so can ask a v3 file not to write tags.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)