[RELEASE] ScyllaDB Java Driver 3.12.1.0

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.

:page_facing_up: 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.txt and NOTICE_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_binary lists 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 the licenses/ directory that file refers to.

If your compliance tooling scans dependencies for license and notice files, 3.x artifacts now pass that check.

:key: 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.

:wrench: Fixes from upstream 3.12.x

  • Broadcast RPC address matching for the control connection (JAVA-3125). The driver now reads rpc_port from system.local and system.peers when 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 no rpc_port column, so this only affects Apache Cassandra servers that expose it.
  • No Host header 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.

:test_tube: Testing

  • SELECT without FROM is now covered by validation tests (DRIVER-787, #955).
  • Version gates are applied before CCM starts, and SSLSessionTicketsTest is gated on ScyllaDB 2025.2 per class (#1226, #1221).

:hammer_and_wrench: 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-plugin is now 0.12.0 (#1257).
  • Docs build cleanly again, and changelog/README.md lists upstream releases only. ScyllaDB fork releases are documented in GitHub Releases.

Who should upgrade

All 3.x users, especially if you:

  1. need license and notice files in your shipped dependencies, or
  2. connect to Apache Cassandra clusters where rpc_port differs 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

As always, feel free to report any issues on GitHub.