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

stack commented on HBASE-21401:
-------------------------------

bq. if so, then the HBASE-21379 won't happen, i think.

Why you think? I'd think that if the block was corrupted in transit, the 
checksum would fail. Since it didn't, it would seem the content was mis-coded 
on write? (As you suggest yourself above).

bq. If parse once, then all the offsets need to be saved in KeyValue object, 
may have lots of small object ?

I'm not talking about creating instances but creating ints and longs from bytes 
to do lengths and offsets.  Why not integrate the checks that are in 
checkKeyValueBytes -- are all of these necessary? -- into the KV constructor? 
Have it check the type byte to see it is legit... and so on.

While the double parse may be "cheap", lets not do work we can avoid.

Thanks.



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

Reply via email to