Fix dse-stats-converter and upgrade dependencies for security#22
Open
jblang wants to merge 1 commit into
Open
Conversation
michaelsembwever
approved these changes
Apr 3, 2026
michaelsembwever
left a comment
Collaborator
There was a problem hiding this comment.
looks good. tests pass.
i would fix the path in the stats file, and ideally provide different product+version stat files to test against…
75b5e32 to
2c3ab1b
Compare
6b234e2 to
acdacac
Compare
DSE Stats Converter Fixes: - Fixed NoClassDefFoundError by extracting all 30+ netty module jars from DSE tarball - Added 22 missing runtime dependency patterns (JNA, commons-io, stream, etc.) - Enabled ConvertTest for regression protection against missing dependencies - Test now copies Statistics.db files to build/test-output/ to preserve test resources - Updated documentation with dependency determination methodology Build System Improvements: - Upgraded all projects from Gradle 6.9.4 to 8.5 - Fixed dse-stats-converter DSE jar extraction and dependency management - Moved DSE jars to .dse-libs/ (gitignored, persists between builds) - Added -D flag to skip dse-stats-converter build - Added -O flag to skip old-c-stats-converter build - Added DSE 6.8.x version compatibility documentation and warnings - Improved build.sh to preserve directories when cleaning DSE jars - Added early build checks to run.sh (exits if montecristo not built, warns about missing converters) Security Updates - montecristo: - cassandra-all: 4.0.19 → 4.0.20 - guava: 31.1-jre → 33.4.0-jre (latest Java 8 compatible) - netty-all: 4.1.129.Final → 4.1.132.Final - jackson: 2.15.4 → 2.18.6 - lucene: 7.5.0 → 8.11.4 - snakeyaml: upgraded to 2.4 (Cassandra 4.0.20 supports 2.x) Security Updates - old-c-stats-converter: - guava: 18.0 → 25.1-jre (highest Cassandra 3.11.19 compatible) - netty-all: 4.0.44.Final → 4.1.132.Final - libthrift: 0.9.2 → 0.20.0 - httpclient: 4.2.5 → 4.5.14 - commons-lang3: 3.8.1 → 3.18.0 - jackson: 2.15.4 → 2.18.6 - lucene: 7.5.0 → 8.11.4 - snakeyaml: forced to 1.33 (Cassandra 3.11.19 requires 1.x API) Remaining Limitations (Cassandra 3.11.19 compatibility constraints): - snakeyaml 1.33: 2.x API incompatible with Cassandra 3.11.x - guava 25.1-jre: 27.x+ API incompatible with Cassandra 3.11.x - lz4 1.3.0: Cannot upgrade due to package name changes (net.jpountz.lz4.* vs org.lz4.*) Testing: - Added test resource file (la-1-big-Statistics.db) for old-c-stats-converter - Updated ConvertTest to use test resources and generate output in build directory - All tests pass with Java 8
acdacac to
41b6952
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR fixes critical runtime issues in
dse-stats-converter, modernizes the build system across all three projects, and upgrades dependencies to address security vulnerabilities while maintaining Java 8 compatibility.DSE Stats Converter Fixes
Fixed NoClassDefFoundError
netty-all-4.1.128.1.dse.jaris only a 4KB POM aggregator, not a fat jarnetty-transport-classes-epollwithAioclassesDependency Management Approach
fileTree(dir: '.dse-libs')to include jars exactly as shipped by DSEDependency Determination Methodology
Used iterative runtime testing rather than static analysis:
jdepsanalysis showing 838 external class referencesClassNotFoundExceptionerrors occurredTest Improvements
ConvertTestfor regression protectionbuild/test-output/to preserve test resourcesDocumentation Updates
Build System Improvements
Gradle Upgrade
DSE Jar Management
.dse-libs/(gitignored, persists between builds)New Build Flags
-D: Skip dse-stats-converter build (when DSE jars unavailable)-O: Skip old-c-stats-converter build (when not needed)-d: Now removes old DSE jars before extracting new onesEnhanced run.sh
Security Updates
montecristo
old-c-stats-converter
dse-stats-converter
Known Limitations (Cassandra 3.11.19 Compatibility)
The following dependencies in
old-c-stats-convertercannot be upgraded due to API incompatibilities:CustomClassLoaderConstructorwith 1.x API signature. Version 2.x has breaking changes causingNoSuchMethodErrorNoSuchFieldError: DIGIT)net.jpountz.lz4.*vsorg.lz4.*)These are inherent limitations of Cassandra 3.11.x and cannot be resolved without upgrading Cassandra itself.
Testing
la-1-big-Statistics.db) for old-c-stats-converterBreaking Changes
None - all changes are backward compatible. Existing build workflows continue to work.
Migration Notes
.dse-libs/instead oflibs/(automatically handled by build.sh)-Dflag to skip dse-stats-converter if DSE jars unavailable