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


Reply via email to