[ https://issues.apache.org/jira/browse/HBASE-16205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15376469#comment-15376469 ]
Anoop Sam John commented on HBASE-16205: ---------------------------------------- Sorry am not getting what you actually trying to ask here. You say we dont need to copy to MSLAB and/or deep copy. Yes when the RCP read the req it will create enough sized bytes such that both cells data is in the same bigger sized byte[]. After HBASE-15180, when the Codec decoder create Cells out of the byte[], it will just create cell wrap over this same byte[]. No copy of the specific cell bytes at this time. Later when a cell is abt to add to MSLAB, it's bytes copied to MSLAB chunk. A chunk will have default size of 2 MB. We have MSLAB chunk pooling also. These are efforts to avoid fragmentation. > 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)