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