cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Petrov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-13086) CAS resultset sometimes does not contain value column even though wasApplied is false
Date Tue, 03 Jan 2017 10:16:58 GMT

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

Alex Petrov commented on CASSANDRA-13086:
-----------------------------------------

bq. I did some debugging recently and was able to track these ResultSets to StorageProxy.cas()
to the "CAS precondition does not match current values {}" return statement.

This is just where the code exists when the results were not applied, a trace statement to
help debugging issues C*-side. 

I know we have several cases when the value is not returned. One of the examples would be
when there's no row that would match the request (although with special conditions, you can
refer to {{InsertUpdateIfConditionTest}} for more information, check for the tests with empty
partitions). 
Could you paste example schema and example succeeding/failing CAS statements with full results
and explain why you expect the row to be returned in a certain case?

Thank you!

> CAS resultset sometimes does not contain value column even though wasApplied is false
> -------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-13086
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13086
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Christian Spriegel
>            Assignee: Alex Petrov
>            Priority: Minor
>
> Every now and then I see a ResultSet for one of my CAS queries that contain wasApplied=false,
but does not contain my value column.
> I just now found another occurrence, which causes the following exception in the driver:
> {code}
> ...
> Caused by: com.mycompany.MyDataaccessException: checkLock(ResultSet[ exhausted: true,
Columns[[applied](boolean)]])
>     at com.mycompany.MyDAO._checkLock(MyDAO.java:408)
>     at com.mycompany.MyDAO._releaseLock(MyDAO.java:314)
>     ... 16 more
> Caused by: java.lang.IllegalArgumentException: value is not a column defined in this
metadata
>     at com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:266)
>     at com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:272)
>     at com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:81)
>     at com.datastax.driver.core.AbstractGettableData.getBytes(AbstractGettableData.java:151)
>     at com.mycompany.MyDAO._checkLock(MyDAO.java:383)
>     ... 17 more
> {code}
> The query the application was doing:
> delete from "Lock" where lockname=:lockname and id=:id if value=:value;
> I did some debugging recently and was able to track these ResultSets to StorageProxy.cas()
to the "CAS precondition does not match current values {}" return statement.
> I saw this happening with Cassandra 3.0.10 and earlier versions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message