Hello everyone,
We use the Dropwizard Metrics 3.1.5 library, which provides a basic set of classes to easily expose Cassandra internals to a user through various interfaces (the most common being JMX). We want to upgrade this library version in the next major release 5.0 up to the latest stable 4.2.19 for the following reasons: - the 3.x (and 4.0.x) Dropwizard Metrics library is no longer supported, which means that if we face a critical CVE, we'll still need to upgrade, so it's better to do it sooner and more calmly; - as of 4.2.5 the library supports jdk11, jdk17, so we will be in-sync [1] as well as having some of the compatibility fixes mentioned in the related JIRA [2]; - there have been a few user-related requests [3][4] whose applications collide with the old version of the library, we want to help them; The problem The problem with simply upgrading is that the JmxReporter class of the library has moved from the com.codahale.metrics package in the 3.x release to the com.codahale.metrics.jmx package in the 4.x release. This is a problem for applications/tools that rely on the cassandra classpath (lib/jars) as after the upgrade they may be looking for the JmxReporter class which has changed its location. A good example of the problem that we (or a user) may face after the upgrade is our tests and the cassandra-driver-core 3.1.1, which uses the old 3.x version of the library in tests. Of course, in this case, we can upgrade the cassandra driver up to 4.x [5][6] to fix the problem, as the new driver uses a newer version of the library, but that's another story I won't go into for now. I'm talking more about visualising the problem a user might face after upgrading to 5.0 if he/she rely on the cassandra classpath, but on the other hand, they might not face this problem at all because, as I understand, they will provide this library in their applications by themselves. So, since Cassandra has a huge ecosystem and a variety of tools that I can't even imagine, the main question here is: Can we move forward with this change without breaking backwards compatibility with any kind of tools that we have considering the example above as the main case? Do you have any thoughts on this? The changes are here: https://github.com/apache/cassandra/pull/2238/files [1] https://github.com/dropwizard/metrics/pull/2180/files#diff-5dbf1a803ecc13ff945a08ed3eb09149a83615e83f15320550af8e3a91976446R14 [2] https://issues.apache.org/jira/browse/CASSANDRA-14667 [3] https://github.com/dropwizard/metrics/issues/1581#issuecomment-628430870 [4] https://issues.apache.org/jira/browse/STORM-3204 [5] https://issues.apache.org/jira/browse/CASSANDRA-15750 [6] https://issues.apache.org/jira/browse/CASSANDRA-17231