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

Sylvain Lebresne commented on CASSANDRA-9554:
---------------------------------------------

You're right of course.

I've push a few additional commits on [my 
branch|https://github.com/pcmanus/cassandra/commits/9554]. It makes 
{{PartitionTest.testDigest}} run on the legacy format (even though that test 
isn't all that useful) and more importantly adds backward compatibility tests 
against values computed on 2.2 as suggested. There is also 3 other "fix" 
commits:
* the first one remove the "local deletion time" from the digest computation on 
3.0 nodes. This one isn't really a bug nor a problem for backward 
compatibility, but as the name implies, the "local deletion time" is meant to 
be a local information (even though it's in practice assigned by the 
coordinator and thus common to all replica, and that's why this wasn't a 
problem) and if "feels" better to not use it in digests.  This is also more 
consistent with the old way to during things (we don't include it in pre-3.0 
digets).
* the second one makes it so that deletion of a row on a compact table is done 
through the insertion of a cell tombstone. As explained by the comment in the 
commit, that's more consistent with the old way of doing this, and is easier 
than to deal with that in both thrift and the backward compatibility code 
(which we weren't doing properly).
* the thirft one fix minor errors in the legacy digest computation.

CI tests are ongoing but will be at 
[utests|http://cassci.datastax.com/job/pcmanus-9554-testall/2/] and 
[dtests|http://cassci.datastax.com/job/pcmanus-9554-dtest/2/].

> Avoid digest mismatch storm on upgrade to 3.0
> ---------------------------------------------
>
>                 Key: CASSANDRA-9554
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9554
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Aleksey Yeschenko
>            Assignee: Sylvain Lebresne
>              Labels: upgrade
>             Fix For: 3.0 beta 2
>
>
> CASSANDRA-8099, in {{UnfilteredRowIterators.digest()}}:
> {code}
>         // TODO: we're not computing digest the same way that old nodes. This
>         // means we'll have digest mismatches during upgrade. We should pass 
> the messaging version of
>         // the node this is for (which might mean computing the digest last, 
> and won't work
>         // for schema (where we announce the version through gossip to 
> everyone))
> {code}
> In a mixed 2.1(2.2) - 3.0 clusters, we need to calculate both digest at the 
> same time and keep both results, and send the appropriate one, depending on 
> receiving nodes' messaging versions. Do that until 
> {{MessagingService.allNodesAtLeast30()}} is true (this is not unprecedented).



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

Reply via email to