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

Reply via email to