Hi everyone,
We’re happy to announce the release of ScyllaDB Java Driver 3.12.1.0.
This release starts a new version line for the 3.x driver. Until now, the 3.x fork was based on DataStax Java Driver 3.11.5. It now includes Apache Cassandra Java Driver 3.12.1, and the version reflects that: 3.12.1 is the upstream release, and the fourth number counts ScyllaDB releases on top of it. The Maven coordinates have not changed.
Two things to read before upgrading: 3.x jars now ship with LICENSE and NOTICE files, and 3.x releases are now signed with a new key. If your build verifies signatures, you’ll need to trust that key.
LICENSE and NOTICE now included in the artifacts
The 3.x line never took in the Java driver’s donation to the ASF. Because of that, the published scylla-driver-core:3.11.5.20 jar had no LICENSE or NOTICE file at all. Starting with 3.12.1.0 (#1322):
- The main, sources and shaded jars include
LICENSE,NOTICE.txtandNOTICE_binary.txt. - The NOTICE files carry the ScyllaDB Java Driver attribution and say the driver is derived from the Apache Cassandra Java Driver. The ASF copyright lines are kept as upstream wrote them.
LICENSE_binarylists the versions of bundled libraries that this fork actually ships (jnr-posix 3.1.19, ASM 9.7.1, HdrHistogram 2.2.2, SLF4J 1.7.36). The binary tarball now includes thelicenses/directory that file refers to.
If your compliance tooling scans dependencies for license and notice files, 3.x artifacts now pass that check.
New signing key
This release is signed with the Java Driver’s repository-specific publisher certificate, the same one 4.x moved to in 4.19.2.3 (#1287). Package signatures, release commits and the annotated tag all use this subkey. Earlier releases keep their original signatures.
- Primary fingerprint:
FA5BF24FD656DB6172B6DEDA92CDA600C75CA820 - Signing subkey fingerprint:
6633DD12AC5A67675513E2EA998E34B10468CB5B - Public certificate
If you verify artifact signatures as part of your build, you’ll need to trust this key.
Fixes from upstream 3.12.x
- Broadcast RPC address matching for the control connection (JAVA-3125). The driver now reads
rpc_portfromsystem.localandsystem.peerswhen the column exists, so topology and status events match the right host.- The merge also fixes a problem specific to this fork: the fork’s system-table column projection did not select
rpc_port. Without that fix, every refresh after the first one would have fallen back to the connection port. ScyllaDB has norpc_portcolumn, so this only affects Apache Cassandra servers that expose it.
- The merge also fixes a problem specific to this fork: the fork’s system-table column projection did not select
- No
Hostheader on metadata requests (CASSJAVA-55). With some system properties set, this header could break request routing. - Build fixes from upstream for comparison files that contain comment lines (CASSJAVA-57), the Maven 3 doclint parameter (CASSJAVA-66), and
release:prepare(CASSJAVA-67).
The reported driver name stays ScyllaDB Java Driver. Upstream’s DRIVER_NAME change (CASSJAVA-58) was not taken.
Testing
SELECTwithoutFROMis now covered by validation tests (DRIVER-787, #955).- Version gates are applied before CCM starts, and
SSLSessionTicketsTestis gated on ScyllaDB 2025.2 per class (#1226, #1221).
Build and release
The 3.x release pipeline now has the same safeguards as 4.x:
- The driver matrix runs before a release, so a tag the matrix can’t build is no longer published (#898).
- Release blockers are scoped to the line being released (#1264).
- Release credentials are protected and logs are sanitized (#1254, #1258, #1249).
- Releases are validated and signing is scoped (#1303), and staged artifacts are verified before they are published (#1306).
- 3.x releases now get immutable GitHub Releases (#1308). This is the first one.
- JDK 8 builds on Maven 3.10 are fixed by excluding byteman’s
tools.jar(#1224).central-publishing-maven-pluginis now 0.12.0 (#1257). - Docs build cleanly again, and
changelog/README.mdlists upstream releases only. ScyllaDB fork releases are documented in GitHub Releases.
Who should upgrade
All 3.x users, especially if you:
- need license and notice files in your shipped dependencies, or
- connect to Apache Cassandra clusters where
rpc_portdiffers from the port the driver connects on.
On ScyllaDB clusters, the runtime behaviour is the same as 3.11.5.20. Before upgrading, check signature verification if your pipeline enforces it.
Note that the 3.x line is deprecated (#919) and gets maintenance releases only. If you can, plan a move to 4.x.
What’s next
The merge of upstream 3.13.0 is already in progress (#1295) and will ship as 3.13.0.0. It adds CASSJAVA-85: server warnings are decoded before the custom payload.
Download / Coordinates
<dependency>
<groupId>com.scylladb</groupId>
<artifactId>scylla-driver-core</artifactId>
<version>3.12.1.0</version>
</dependency>
Links
- GitHub Release: Release 3.12.1.0
- Full Changelog: Comparing 3.11.5.20…3.12.1.0
- Documentation: Java Driver 3.x
As always, feel free to report any issues on GitHub.