You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Sam Tunnicliffe (JIRA)" <ji...@apache.org> on 2015/02/03 17:28:36 UTC

[jira] [Updated] (CASSANDRA-8049) Explicitly examine current C* state on startup to detect incompatibilities before upgrade

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

Sam Tunnicliffe updated CASSANDRA-8049:
---------------------------------------
    Attachment: 8049.txt

I've pulled all of the preflight checks that happen in CassandraDaemon#setup() into a new SystemTests class. This is mainly for testability but it also makes things a bit easier/clearer when adding new checks.

I also added some further checks before we start modifying stuff:
* Check that there are no unreadable sstable files in any data directories (excluding backups and snapshots)
* If we detect that we're upgrading from a previous version, snapshot the system keyspace before anything modifies it
* If the delta between the new and previous versions is too great, refuse to startup. Determining the threshold here is not straightforward, so I've punted on it and added a constant {{OLDEST_PERMITTED_PREVIOUS_VERSION}}. Suggestions as to a better way to determine that are welcome.

> Explicitly examine current C* state on startup to detect incompatibilities before upgrade
> -----------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-8049
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8049
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Aleksey Yeschenko
>            Assignee: Sam Tunnicliffe
>             Fix For: 3.0
>
>         Attachments: 8049.txt
>
>
> Unfortunately, we cannot rely on users reading, and following, NEWS.txt before upgrading. People don't read, or ignore it, and sometimes have issues as the result (see CASSANDRA-8047, for example, and I know of several cases like that one).
> We should add an explicit compatibility check on startup, before we modify anything, or write out sstables with the new format. We should fail and complain loudly if we detect a skipped upgrade step.
> We should also snapshot the schema tables before attempting any conversions (since it's not uncommon to make schema modifications as part of the upgrade).



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