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

Anoop Sam John commented on HBASE-16205:
----------------------------------------

Case 2 : Both cells as such less than 256 KB and so both will be copied to 
MSLAB  
Case 3 : Cell1 size > 256 and so that wont get copied to MSLAB.

It is not the sum of cell's size what is accounted.
When the cell is not copied to MSLAB, we can not leave it as is and add to 
Memstore as the buffer where the req was read into go back to pool and get 
reused.  So that is why the deep copy need arise. The copy happen to an byte[] 
on the run created.

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