Gregory Chanan created HBASE-7051:
-------------------------------------

             Summary: Read/Updates (increment,checkAndPut) should properly read 
MVCC
                 Key: HBASE-7051
                 URL: https://issues.apache.org/jira/browse/HBASE-7051
             Project: HBase
          Issue Type: Bug
    Affects Versions: 0.96.0
            Reporter: Gregory Chanan


See, for example:
{code}
// TODO: Use MVCC to make this set of increments atomic to reads
{code}

Here's an example of what I can happen (would probably be good to write up a 
test case for each read/update):
Concurrent update via increment and put.

The put grabs the row lock first and updates the memstore, but releases the row 
lock before the MVCC is advanced.  Then, the increment grabs the row lock and 
reads right away, reading the old value and incrementing based on that.

There are a few options here:
1) Waiting for the MVCC to advance for read/updates: the downside is that you 
have to wait for updates on other rows.

2) Have an MVCC per-row (table configuration): this avoids the unnecessary 
contention of 1)

3) Transform the read/updates to write-only with rollup on read..  E.g. an 
increment  would just have the number of values to increment.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to