[
https://issues.apache.org/jira/browse/HBASE-14398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14948190#comment-14948190
]
Anoop Sam John commented on HBASE-14398:
----------------------------------------
IMO also getRowByteBuffer is better than getRow.
We had getRow() returning byte[] in Cell. In trunk we removed it very recently.
So Stack, you agree to the idea of not throwing Exception when we call
getXXXArray() on a DBB backed cell. So here we will copy and return the byte[].
Regarding getXXXOffset comment, u mean when the Cell is DBB backed, the user
has to assume the offset to be 0 always? That means again every where we have
to have instance of BBCell check.
One more thing. We will have to make a BBCell impl with backing on heap BB as
well as off heap BB. This is the case of DBE. So there we will compute the new
Key by algo and it will be in a byte[]. The value part will be in an off heap
BB. We dont want to copy the value part. So what we will do is make a new
Cell impl with key abd value backed by 2 diff data structure. And so it has to
be extending BBCell. Our read path and comparators have check like if the
incoming cell is BBCell, we will use getXXXByteBuffer APIs instead of
getXXXArray. So for the key parts on this cell also, we will use
getXXXByteBuffer API. If we are keeping the ref to key as byte[] type, every
call to BB API has to wrap it and so make an Object. So what we do is keep the
ref to key part as BB only by wrapping the key byte[]. So we have a cell
with on heap BB backed. Here the cell is BBCell and when one use
getFamilyArray(), he can not assume the offset to be 0. This will be a non
zero value.
Said all these to explain why we need 2 APIs for offset in byte[] and position
in BB. It can be different in many a cases and no assumptions also possible.
Regarding reduce the method name length, I think getXXXPosition() is just fine.
This class deals with BB APIs and so when we say position, it is in BB is
understood. Also the name offset suits with array and with BB the term
'position' better fits. :-)
> Create the fake keys required in the scan path to avoid copy to byte[]
> ----------------------------------------------------------------------
>
> Key: HBASE-14398
> URL: https://issues.apache.org/jira/browse/HBASE-14398
> Project: HBase
> Issue Type: Sub-task
> Reporter: ramkrishna.s.vasudevan
> Assignee: ramkrishna.s.vasudevan
> Fix For: 2.0.0
>
> Attachments: HBASE-14398.patch, HBASE-14398_1.patch
>
>
> Already we have created some fake keys for the ByteBufferedCells so that we
> can avoid the copy requried to create fake keys. This JIRA aims to fill up
> all such places so that the Offheap BBs are not copied to onheap byte[].
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)