docker-library / cassandra

Docker Official Image packaging for Cassandra
Apache License 2.0
262 stars 282 forks source link

Cassandra Nodetool stops working after Java update to 8u332 / 11.0.15 #248

Closed kki03 closed 2 years ago

kki03 commented 2 years ago

With the latest Java updates a change to RMI url handling happened which breaks the Cassandra nodetool command. For the details see Apache Cassandra issue CASSANDRA-17581.

Currently there is only Cassandra 4 affected but as soon as Eclipse Temurin images for Java 8u332 are available nodetool will stop working for Cassandra 3.x as well.

tianon commented 2 years ago

Given there appears to be progress on a proper upstream fix, I'm hesitant to do very much in the Docker image to work around this (because we'll only need to roll it back as soon as they've got a real fix out).

From what I can see, Cassandra itself does not fail to start and this only affects nodetool, so I would suggest using one of the following workarounds from https://issues.apache.org/jira/browse/CASSANDRA-17581?focusedCommentId=17528612&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17528612 in the meantime:

OPTION 1 - Add the "legacy" parsing flag when running nodetool, for example:

$ nodetool -Dcom.sun.jndi.rmiURLParsing=legacy status

OPTION 2 - Specify the hostname with an IPv6 subnet prefix, for example:

$ nodetool -h ::FFFF:127.0.0.1 status
kki03 commented 2 years ago

I fully agree with you that it makes no sense to work around the issue especially since the Apache Cassandra team is already working on a fix. But maybe it would make sense to temporarily suspend image creation for Cassandra 3.x until they have a fix ready. Otherwise we might end up with Cassandra versions in Docker hub where nodetool is not working as expected.

kki03 commented 2 years ago

Just for the records, Cassandra 3.x docker images have been rebuilt with Java 8u332 yesterday (May 5th) and nodetool doesn´t work anymore without hostname or legacy mode.

Hennns commented 2 years ago

This has been fixed in cassandra 4.04, which has been released. 3.0.27 and 3.11.13 also have the fix, and has been released.

@tianon I would greatly appreciate it if you could run the script that updates the versions in the docker-library/official-images repository, so that we can get the official image with the fix from dockerhub. Thank you :)

tianon commented 2 years ago

Fixed here in https://github.com/docker-library/cassandra/commit/d6898545a7629b1a7ee7e719379e26fab9bc29de, https://github.com/docker-library/cassandra/commit/dd116c4542c20c0cb34df6db706230cb7872c51d, and https://github.com/docker-library/cassandra/commit/e78718f9e87bc48ec55d367b91f1b4ab4534dbf2; downstream PR at https://github.com/docker-library/official-images/pull/12449. :+1: