hongyu bi created HBASE-12948: --------------------------------- Summary: 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
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 (v6.3.4#6332)