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

Jonathan Ellis commented on CASSANDRA-5619:
-------------------------------------------

bq. in the metadata returned, we use [timestamp] and [ttl] for the name of the 
prepared variables returned

Could we do {{timestamp(column)}} and {{ttl(column)}}, including literal 
parentheses, where {{column}} is the name of the column involved?  These would 
not be legal column names so we would be safe from conflicts.

Could do something similar here -- pick a not-quite-legal column name -- but I 
do think the exception approach is cleaner, despite returning a resultset in 
the exception.

If we're doing CasFailedExceptions in StorageProxy I do think it's cleanest to 
continue to translate it into a Thrift-side exception the way we do with 
WriteTimeout et al.  No?
                
> CAS UPDATE for a lost race: save round trip by returning column values
> ----------------------------------------------------------------------
>
>                 Key: CASSANDRA-5619
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5619
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 2.0 beta 1
>            Reporter: Blair Zajac
>            Assignee: Sylvain Lebresne
>             Fix For: 2.0 beta 1
>
>         Attachments: 0001-Add-back-boolean-result-column.txt, 
> 5619_thrift_fixup.txt, 5619.txt
>
>
> Looking at the new CAS CQL3 support examples [1], if one lost a race for an 
> UPDATE, to save a round trip to get the current values to decide if you need 
> to perform your work, could the columns that were used in the IF clause also 
> be returned to the caller?  Maybe the columns values as part of the SET part 
> could also be returned.
> I don't know if this is generally useful though.
> In the case of creating a new user account with a given username which is the 
> partition key, if one lost the race to another person creating an account 
> with the same username, it doesn't matter to the loser what the column values 
> are, just that they lost.
> I'm new to Cassandra, so maybe there's other use cases, such as doing 
> incremental amount of work on a row.  In pure Java projects I've done while 
> loops around AtomicReference.html#compareAndSet() until the work was done on 
> the referenced object to handle multiple threads each making forward progress 
> in updating the references object.
> [1] https://github.com/riptano/cassandra-dtest/blob/master/cql_tests.py#L3044

--
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