You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Brandon Williams (JIRA)" <ji...@apache.org> on 2013/06/26 21:21:20 UTC

[jira] [Updated] (CASSANDRA-5696) Upgrading to cassandra-1.2 with a dead LEFT state from 1.1 causes problems

     [ https://issues.apache.org/jira/browse/CASSANDRA-5696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brandon Williams updated CASSANDRA-5696:
----------------------------------------

    Attachment: 5696.txt

There are a few different ways this can be solved, but it's obvious that the most correct thing to do is correct the order in VV.  This too turns out to be workable though, as long as you either a) do a full ring restart (to wipe the dead states) or b) do not upgrade within 72 hours of decommissioning a node.  Almost everyone will likely fall into group b) but if they don't, and don't read the warning in NEWS.txt the possible things that can happen are:

* they receive a harmless NumberFormatException everywhere
* they carry a useless dead state around for a token that doesn't exist for an indeterminate amount of time (which assassinate could fix)
* the timestamp used for the decom expiration matches a node's token and it will need to be  shutdown and rebootstrapped

None of these seem world-ending, with the last one being the worst and also least likely to occur, so here's a patch where we just change the VV order and update NEWS.
                
> Upgrading to cassandra-1.2 with a dead LEFT state from 1.1 causes problems
> --------------------------------------------------------------------------
>
>                 Key: CASSANDRA-5696
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5696
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.2.0
>            Reporter: Brandon Williams
>            Assignee: Brandon Williams
>             Fix For: 1.2.7
>
>         Attachments: 5696.txt
>
>
> In 1.1, we wrote LEFT states as LEFT,token,expiretime in gossip.  However in 1.2, VersionValue serializes this to LEFT,expiretime,tokens and causes the upgrade 1.2 to try and parse it this way as well, causing it to try to parse the token as an expiretime.
> Another wrinkle to this is assassinate still writes it the old way: LEFT,tokens,expiretime.

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