[ 
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)

Reply via email to