accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christopher Tubbs (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-3044) ConditionalMutation should support conditional updates
Date Tue, 05 Aug 2014 21:03:14 GMT

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

Christopher Tubbs commented on ACCUMULO-3044:
---------------------------------------------

Issue description states:
bq. A new type of ConditionalMutation which operates on a single row and applies an update
if and only if a set of Conditions for that particular update would be more flexible.

In my view, this is (by definition) out of scope for a "mutation". A mutation is an atomic*
transaction on a single row. Having a set of conditions per-update implies that some updates
could succeed and others fail. That breaks the definition of a mutation, and indicates that
you really should be using multiple mutations for updates with their own conditions.

There's possibly room for performance improvements, but I think this issue breaks the defined
semantics of "mutation" as worded.

The alternate solution, however, might work if, as [~kturner] questions, the slowness is because
of the row locking (determined by experimentation).

> ConditionalMutation should support conditional updates
> ------------------------------------------------------
>
>                 Key: ACCUMULO-3044
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-3044
>             Project: Accumulo
>          Issue Type: Improvement
>          Components: client, tserver
>    Affects Versions: 1.6.0
>            Reporter: Ryan Leary
>
> Currently, the ConditionalMutation object operates on a single row, and applies updates
if and only if a set of Conditions are met. 
> A new type of ConditionalMutation which operates on a single row and applies an update
if and only if a set of Conditions for that particular update would be more flexible.
> This behavior is possible currently by creating a new ConditionalMutation for each update.
In the case where there are a large number of updates for a single row, however, there is
a steep penalty paid due to the row-level locking. Another acceptable solution to this ticket
would be optimizing the ConditionalWriter to apply multiple conditional mutations on the same
row within the same atomic lock. The order of execution would need to be guaranteed.
> The API would look something like:
> {code}
> ConditionalMutation cm = new ConditionalMutation(rowKey);
> cm.put(Iterable<Condition>, CF, CQ, CV, Val);
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message