If we do not recommend and do not test direct upgrades from 3.x to 5.x, we can clean up a fair bit by removing code related to sstable formats m*, as Cassandra versions 4.x and 5.0 are all on sstable formats n*.
We don't allow mixed-version streaming, so it's not possible today to stream any such older sstable format between nodes. This compatibility-break impacts only node-local and/or offline. Some arguments raised to keep m* sstable formats are: - offline cluster upgrade, e.g. direct from 3.x to 5.0, - single-invocation sstableupgrade usage - third-party tools based on the above Personally I am not in favour of keeping, or recommending users use, code we don't test. An _example_ of the code that can be cleaned up is in the patch attached to the ticket: CASSANDRA-18312 – Drop support for sstable formats before `na` What do you think?