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

Jonathan Ellis commented on CASSANDRA-6194:
-------------------------------------------

The problem is that when we speculate, we do multiple data reads, and 
RowDigestResolver assumes there is only one data read.  (If there is more than 
one, it does not error out but silently drops all but one.)

So if the speculative read results in triggering the callback's "we have enough 
replies to satisfy CL" logic, and the speculative data read finished before the 
digest, we effectively do CL.ONE logic instead of CL.QUORUM.

https://github.com/jbellis/cassandra/commits/6194 includes a fix for this and 
also a fix for DigestMismatch logic with SR.

> speculative retry can sometimes violate consistency
> ---------------------------------------------------
>
>                 Key: CASSANDRA-6194
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6194
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Brandon Williams
>            Assignee: Jonathan Ellis
>             Fix For: 2.0.2
>
>         Attachments: 6194.txt
>
>
> This is most evident with intermittent failures of the short_read dtests.  
> I'll focus on short_read_reversed_test for explanation, since that's what I 
> used to bisect.  This test inserts some columns into a row, then deletes a 
> subset, but it performs each delete on a different node, with another node 
> down (hints are disabled.)  Finally it reads the row back at QUORUM and 
> checks that it doesn't see any deleted columns, however with speculative 
> retry on this often fails.  I bisected this to the change that made 99th 
> percentile SR the default reliably by looping the test enough times at each 
> iteration to be sure it was passing or failing.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to