Subject: Protocol-impacting (internode and client) changes for 4.0


During NGCC/ACNA19 we've had quite a few conversations around the 4.0
release. Many (minor) features and changes suggested during that time are
possible to implement in without any problem. However, some changes
that seem to be very important for the community, which got mentioned in
several conversations, are not possible to implement without protocol
changes. By *protocol* changes here I mean both native and client protocol.

Here's a shortlist of the issues in question: Add “Going away”
message to the client protocol Add CAS “uncertainty”
and “contention" messages that are currently propagated as a
WriteTimeoutException. Allow configuring
timeouts on the per-request basis Replica failure
propagation to coordinator and client Improve checksumming
and compression in protocol v5-beta

And, less importantly - CASSANDRA-14683 (paging state issue).

My suggestion would be to lift a freeze for all (or at least some) of these
issues, since they seem to be quite important for operators and each one of
them is extremely low risk, which means that any validation effort that has
already happened won't have to be re-done. All of the issues are fairly
easy to implement, which means they won't delay the release.

To my best knowledge, there's no client that fully supports 4.0, I think
doing this now actually makes sense, meaning that driver implementers won't
really have to redo anything.

Your thoughts on this are welcome,
-- Alex