cscetbon / casskop

This Kubernetes operator automates Cassandra operations such as deploying rack aware clusters, scaling up and down, configuring C* and its JVM, upgrading JVM and C*, backup/restores and many more...
https://cscetbon.github.io/casskop/
Apache License 2.0
12 stars 9 forks source link

Upgrading cassadra pod from 4.1.5 to 5.0.1 fails with: Error opening zip file or JAR manifest missing : /opt/cassandra/lib/jamm-0.3.2.ja #158

Open Vasile27 opened 1 month ago

Vasile27 commented 1 month ago

Type of question

Are you asking about community best practices, how to implement a specific feature, or about general context and help around casskop ? Help around casskop during upgrade of cassandra from 4.1.5 to 5.0.1

Question

How can I upgrade cassandra pod from 4.1.5 to 5.01?

What did you do? I have updated the image to be used for cassandra in the cassandra casskop CRD from 4.1.5 to 5.0.1

What did you expect to see? Cassandra pod to be up and to have version 5.0.1.

What did you see instead? Under which circumstances? Cassandra pod is crashed and I see the following logs in the pod:

│
│ cassandra OpenJDK 64-Bit Server VM warning: Option UseBiasedLocking was deprecated in version 15.0 and will likely be removed in a future release.                                                                                                                        │
│ cassandra Error opening zip file or JAR manifest missing : /opt/cassandra/lib/jamm-0.3.2.jar                                                                                                                                                                              │
│ cassandra Error occurred during initialization of VM                                                                                                                                                                                                                      │
│ cassandra agent library failed to init: instrument 

It seems that jamm-0.3.2.jar is the old library used by cassandra 4.1.5. I have checked the docker image of cassandra 5.0.1 and there is a new jamm library.

Environment

ghcr.io/cscetbon/casskop:2.2.4

Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-17T15:48:33Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"archive", BuildDate:"2024-08-16T07:55:20Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}

ReleaseVersion: 4.1.5

Additional context Add any other context about the question here.

cscetbon commented 1 month ago

Hey @Vasile27 I suspect the issue you're facing comes fromdatastax/cass-config-builder that doesn't support Cassandra 5.0. I see that cassandra 4.1.5 has that library but cassandra 5.0.1 has /opt/cassandra/lib/jamm-0.4.0.jar instead

dkr --rm -ti cassandra:4.1.5 bash -c "ls /opt/cassandra/lib/jamm*"
/opt/cassandra/lib/jamm-0.3.2.jar

dkr --rm -ti cassandra:5.0.1 bash -c "ls /opt/cassandra/lib/jamm*"
/opt/cassandra/lib/jamm-0.4.0.jar

However, I suspect that your cassandra-env.sh is generated according to cassandra 4.0 cause it's the last transformation that it knows about see here. So in order to solve your issue we would have to create a PR for https://github.com/datastax/cass-config-definitions and if they don't accept it anymore fork that repo on our side. I can see that for version 5 they only updated DSE and not the community version. In the meantime can you try on your side using your own version of the repo maybe ?

cscetbon commented 1 month ago

@AKamyshnikova interesting information 👆