hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Hofhansl (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-4583) Integrate RWCC with Append and Increment operations
Date Fri, 02 Nov 2012 18:01:17 GMT

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

Lars Hofhansl commented on HBASE-4583:

The problem this fixes is how Increments/Appends interact with *other* operations.
There are two problems:
# A race between a prior Put and a following Increment. The Increment might not see the latest
state generated by the Put.
# An increment that updates multiple columns on a row can cause a concurrent scanner to see
partially applied rows. The specifics here are that in order to make Increments strictly serializable
upsert used to set the memstoreTS to 0, making the change visible immediately to all concurrent
and future scanners.

As long as only increments are used and you do not care for partially applied rows, the current
code is correct.

#1 is fixed by having the Increment wait for prior MVCC transactions with the lock held.
#2 is fixed by either getting rid of upsert altogether (the "radical" version of this patch,
which incurs the 10% overhead you measured) or make upsert MVCC aware (the "less radical"
version of this patch, which should only incur minimal overhead).

The objective of the "radical" patch was to fix these problems and to also get rid of a lot
of code specific to increment (and which also breaks the VERSIONS contract).
The "less radical" patch fixes the issues by fixing upsert to be MVCC aware.

TL;DR: I'm happy with either patch, slightly leaning towards the "radical" version. But I
think you're right that the current Increment performance is now expected, so the "less radical"
version is probably the way to go.

> Integrate RWCC with Append and Increment operations
> ---------------------------------------------------
>                 Key: HBASE-4583
>                 URL: https://issues.apache.org/jira/browse/HBASE-4583
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Lars Hofhansl
>            Assignee: Lars Hofhansl
>             Fix For: 0.96.0
>         Attachments: 4583-trunk-less-radical.txt, 4583-trunk-less-radical-v2.txt, 4583-trunk-less-radical-v3.txt,
4583-trunk-less-radical-v4.txt, 4583-trunk-less-radical-v5.txt, 4583-trunk-less-radical-v6.txt,
4583-trunk-radical.txt, 4583-trunk-radical_v2.txt, 4583-trunk-v3.txt, 4583.txt, 4583-v2.txt,
4583-v3.txt, 4583-v4.txt
> Currently Increment and Append operations do not work with RWCC and hence a client could
see the results of multiple such operation mixed in the same Get/Scan.
> The semantics might be a bit more interesting here as upsert adds and removes to and
from the memstore.

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

View raw message