[
https://issues.apache.org/jira/browse/HBASE-18026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16008564#comment-16008564
]
Vincent Poon commented on HBASE-18026:
--------------------------------------
[~anoop.hbase] Could you clarify your concern? Before, toByteArray() was
copying from offset 0 up to the entire length of the proto ByteString array.
So how do we "loose the offset and length of this row bytes" ?
One concern I think you might be raising is that Get constructor, unlike
KeyValue/Put/Delete/Increment constructors, doesn't do a copy of the passed in
byte[] but just assigns it to a field. I think that might be a legitimate
concern, although then the question becomes, if the row in Get can be modified
(and I don't know why we'd be doing an in-place modification?), why don't we do
a protective copy in the constructor instead like in Put, etc?
For the others though, it seems the code was copying twice.
> ProtobufUtil seems to do extra array copying
> --------------------------------------------
>
> Key: HBASE-18026
> URL: https://issues.apache.org/jira/browse/HBASE-18026
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.0.0, 1.3.2
> Reporter: Vincent Poon
> Assignee: Vincent Poon
> Priority: Minor
> Fix For: 2.0.0, 1.4.0, 1.2.6, 1.3.2, 1.1.11
>
> Attachments: HBASE-18026.branch-1.v1.patch,
> HBASE-18026.master.v1.patch
>
>
> In ProtobufUtil, the protobuf fields are copied into an array using
> toByteArray(). These are then passed into the KeyValue constructor which
> does another copy.
> It seems like we can avoid a copy here by using
> HBaseZeroCopyByteString#zeroCopyGetBytes() ?
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)