Hello everybody,
I've been tinkering around trying to upgrade to Cassandra 5 in James
code to validate the compatibility with James.
You can find a JIRA ticket: https://issues.apache.org/jira/browse/JAMES-4142
And the PR attempt: https://github.com/apache/james-project/pull/2780
Latest build was green.
Minimal changes honestly, except one rather odd. We use actually
compression options on the following 4 tables:
- blob_cache
- mailbox
- imapUidTable
- message_fast_view_projection
Problem is: there is a hard breaking change in Cassandra 5.0 where a
compression option changes name from `check_length_kb` to
`check_length_in_kb`.
The java driver for cassandra of course can't deal with this at the moment.
A fix was made and should be part of the next release of the java
driver: https://github.com/apache/cassandra-java-driver/pull/2029
But... it introduces different methods to manage retro compatibility
(which isn't great).
From there we are thinking:
- introducing an option in the configuration to determine if Cassandra 4
or 5 and then select the proper method when we get the new driver
released (which I'm unsure when will that happen)
- dropping the compression, thinking it's not a big deal and documenting
how to add manually those compressions to the tables on cassandra via
cqlsh commands.
We think the second option is the simplest and probably better here,
this is the way the PR has taken by the way. But it deserves a wider
discussion with the community in general (thus the thread).
Note as well that existing setups will be migrated without issues for
those compression options when upgrading the cluster from cassandra 4 to
5. This is just an issue for new setups.
What do people think?
Thank you all and wishing you a good summer holiday as well!
Rene.
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org