Raising messaging service minimum, I have a less strong opinion on, but on dropping m* sstable code I’m strongly -1.
1. This is code on a rarely touched path 2. It’s very stable and battle tested at this point 3. Removing it doesn’t reduce much complexity at all, just a few branches are affected 4. Removing code comes with risk 5. There are third-party tools that I know of which benefit from a single C* jar that can read all relevant stable versions, and relevant here includes 3.0 ones Removing a little of battle-tested reliable code and a tinier amount of complexity is not, to me, a benefit enough to justify intentionally breaking perfectly good and useful functionality. Oh, to add to that - if an operator wishes to upgrade from 3.0 to 5.0, and we don’t support it directly, I think most of us are fine with the requirement to go through a 4.X release first. But it’s one thing to require a two rolling restarts (3.0 to 4.0, 4.0 to 5.0), it’s another to require the operator to upgrade every single m* sstable to n*. Especially when we have perfectly working code to read those. That’s incredibly wasteful. AY > On 13 Mar 2023, at 22:54, Mick Semb Wever <m...@apache.org> wrote: > > 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?