All, As suggested by Scott Andreas I am bringing this discussion to the dev mailing list.
A couple of days ago I posted a question on the user mailing list [1] about the storage compatibility modes and whether you can go straight to SCM (NONE) from Cassandra 4. I am currently do some presentations to operators about the upgrade process and the limitations of the cluster during this process and I am getting a lot of push back, hence my original question. Firstly, let me summarise the limitations I have found. ( and I do this, not to complain, but to point out that this method does not get rid of the issues in doing previous major upgrades, just spreads them out. ) C*4 -> CASSANDRA_4 : There is a schema mismatch, and hints are not sent from C*4 node to C*5 nodes. CASSANDRA_4 -> UPGRADING: Repairs are not possible and Nodes cannot be added or replaced. UPGRADING-> NONE: No issues. For multi DC clusters where operators will only upgrade one DC at a time and pause between DCs, these states can last some time. So, as far as I can work out going from C*4 direct to NONE, has all the above issues, but put together, which seems worse, but there is less time that you are in these between states, and this could be an informed choice operators make. But is there anything else I have missed? The second part to this is the suggestion Jon Haddad made: "it might be possible to make the compatibility mode something that can be changed without a restart, through JMX. “ I have started exploring this, and implemented changing the storageCompatilityMode value in the DatabaseDescritpor class, but although that changes, it still writes stables in the nb format. I see storageCompatilityMode is just used during startup to define the type of stables to write. So I am wondering how easy this would be to change to check as required, but that then causes me to question whether having 2 versions of memtables and sstables being written at the same time is feasible or a good idea. Any thoughts on whether having SCM controlled by JMX/nodetool is a good idea? Thanks Paul [1] https://lists.apache.org/thread/otdq082ol1x1cylvgnj81or20532mwfb