[
https://issues.apache.org/jira/browse/HBASE-21401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16702748#comment-16702748
]
stack commented on HBASE-21401:
-------------------------------
bq. ... there isn't any checksum for request messages now, and I think the
checksum calculation will have more time cost than the checkKeyValueBytes,
because if n = bytes.length, checksum need O( n ) time cost, but
checkKeyValueBytes need O(1) time cost ( it will skip to read the specific
offsets & lens).
(Responding to a comment I missed above)
What I meant is that the our Stream to HDFS is a checksummed stream.
bq. On the other hand, the reason why we need checkKeyValueBytes is : the
different hbase-client version may send the mis-encoding bytes, the
checkKeyValueBytes ensure that the good keyvalues will be accepted, and if find
a bad keyvalues, it will provide the detail what's wrong with the bad keyvalues.
Understood. Just don't understand why we have to parse the bytes twice -- once
to check, and then once to construct KV; can we not integrate the check with
the KV construction so we don't do length parses for row, offsets to type and
timestamp, etc., twice?
> Sanity check in BaseDecoder#parseCell
> -------------------------------------
>
> Key: HBASE-21401
> URL: https://issues.apache.org/jira/browse/HBASE-21401
> Project: HBase
> Issue Type: Sub-task
> Components: regionserver
> Reporter: Zheng Hu
> Assignee: Zheng Hu
> Priority: Critical
> Fix For: 3.0.0, 2.2.0, 2.0.3, 2.1.2
>
> Attachments: HBASE-21401.v1.patch, HBASE-21401.v2.patch,
> HBASE-21401.v3.patch, HBASE-21401.v4.patch, HBASE-21401.v4.patch,
> HBASE-21401.v5.patch
>
>
> In KeyValueDecoder & ByteBuffKeyValueDecoder, we pass a byte buffer to
> initialize the Cell without a sanity check (check each field's offset&len
> exceed the byte buffer or not), so ArrayIndexOutOfBoundsException may happen
> when read the cell's fields, such as HBASE-21379, it's hard to debug this
> kind of bug.
> An earlier check will help to find such kind of bugs.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)