hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "hongyu bi (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-12948) Increment#addColumn on the same column multi times produce wrong result
Date Sun, 01 Feb 2015 23:23:34 GMT

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

hongyu bi commented on HBASE-12948:

Hi Ted,
i just found that according transaction isolation, since multi Increment#addColumn on the
same column are inside one transaction,current edit should see previous edits ,which means
we should merge the edits instead if  "last edit wins" on the same column . if this is true,it'll
produce totally different results to 0.94 and before.

please correct me if i'm wrong

> Increment#addColumn on the same column multi times produce wrong result 
> ------------------------------------------------------------------------
>                 Key: HBASE-12948
>                 URL: https://issues.apache.org/jira/browse/HBASE-12948
>             Project: HBase
>          Issue Type: Bug
>          Components: Client, regionserver
>            Reporter: hongyu bi
>            Priority: Critical
>         Attachments: 12948-v2.patch, HBASE-12948-0.99.2-v1.patch, HBASE-12948-v0.patch,
> Case:
> Initially get('row1'):
> rowkey=row1 value=1
> run:
> Increment increment = new Increment(Bytes.toBytes("row1"));
> for (int i = 0; i < N; i++) {
>         increment.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("c"), 1)
> }
> hobi.increment(increment);
> get('row1'):
> if N=1 then result is 2 else if N>1 the result will always be 1
> Cause:
> https://issues.apache.org/jira/browse/HBASE-7114 let increment extent mutation which
change familyMap from NavigableMap to List, so from client side, we can buffer many edits
on the same column;
> However, HRegion#increment use idx to iterate the get's results, here results.size<family.value().size
if N>1,so the latter edits on the same column won't match the condition {idx < results.size()
&& CellUtil.matchingQualifier(results.get(idx), kv) }, meantime the edits share the
same mvccVersion ,so this case happen.
> Fix:
> according to the put/delete#add on the same column behaviour ,
> fix from server side: process "last edit wins on the same column" inside HRegion#increment
to maintenance  HBASE-7114's extension and keep the same result from 0.94.

This message was sent by Atlassian JIRA

View raw message