[
https://issues.apache.org/jira/browse/HBASE-16205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15389879#comment-15389879
]
ramkrishna.s.vasudevan commented on HBASE-16205:
------------------------------------------------
I did not see that comment carefully.
bq.upsert() is calling
I saw that and that is why asked that question why to call deepCopy in two
places, one inside add() and another in upsert() just before add(). But the
comment says it has to be done like that. Actually we can call deepClone inside
add() and also inside internalAdd(). If add() has done the deepCopy we will
only create a KeyValue or NoTagsKeyValue type. So the deepCopy() inside
internalADd() wont do it again because the cell is not of type Shareable. But
the thing is every time we do mutation addition we have to do instance of check
unnecessarily.
Is it fine to do that way? Else +1 on this patch.
> When Cells are not copied to MSLAB, deep clone it while adding to Memstore
> --------------------------------------------------------------------------
>
> Key: HBASE-16205
> URL: https://issues.apache.org/jira/browse/HBASE-16205
> Project: HBase
> Issue Type: Sub-task
> Components: regionserver
> Affects Versions: 2.0.0
> Reporter: Anoop Sam John
> Assignee: Anoop Sam John
> Priority: Critical
> Fix For: 2.0.0
>
> Attachments: HBASE-16205.patch, HBASE-16205_V2.patch,
> HBASE-16205_V3.patch, HBASE-16205_V3.patch
>
>
> This is imp after HBASE-15180 optimization. After that we the cells flowing
> in write path will be backed by the same byte[] where the RPC read the
> request into. By default we have MSLAB On and so we have a copy operation
> while adding Cells to memstore. This copy might not be there if
> 1. MSLAB is turned OFF
> 2. Cell size is more than a configurable max size. This defaults to 256 KB
> 3. If the operation is Append/Increment.
> In such cases, we should just clone the Cell into a new byte[] and then add
> to memstore. Or else we keep referring to the bigger byte[] chunk for longer
> time.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)