Looks like no major table version changes since 3.0, and a couple of minor
changes in 3.0.7/3.7 and 3.0.8/3.8:
https://github.com/apache/cassandra/blob/48a539142e9e318f9177ad8cec4781
9d1adc3df9/doc/source/architecture/storage_engine.rst

So, I suppose whether a revert is safe or not depends on whether the "mb"
and "mc" table format changes were backported to 3.1.0.
Looking at https://github.com/apache/cassandra/blob/
e092873728dc88aebc6ee10153b9bd3cd90cd858/src/java/org/
apache/cassandra/io/sstable/format/big/BigFormat.java#L112 I'd say it looks
like the "mb" and "mc" table formats were not backported to 3.1.0, so
downgrading is probably dangerous.

Potentially, if you don't need any of the features in 3.1.0 vs 3.0 you
could "downgrade" to 3.0.16 as a "safer" change that would get you
compatible with "mc" formatted sstables.  At that point you can probably go
back and forth between 3.0.16 and 3.11.2 safely.  I'm not sure this is
actually any safer than jumping directly to 3.11.2 though, and it's
definitely a lot more complicated.

This is pure speculation on my part, but given that the changes in mb and
mc aren't major row format changes, downgrading *might* still work.  Or,
potentially, you might be able to use a newer sstableloader to load the
mc-format files into 3.1.0 successfully.  If you go down this road, test
the cross-version loading thoroughly first.  It's probably not the best
plan, but if you get stuck it might be useful.

All that said... 3.11.2 is probably a strict improvement over 3.1.0 in
features, stability, and performance.  I'd lean towards testing as much as
possible then just rolling forwards.

Reply via email to