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