Skip to content

Merge upstream apache/cassandra-java-driver 4.19.3 and 4.19.4 #1255

Closed

Description

@nikagra

Summary

Merge apache/cassandra-java-driver tags 4.19.3 and 4.19.4 into scylla-4.x, then bump the ScyllaDB driver version to 4.19.4.0.

The previous upstream merge brought in Apache tag 4.19.2 (#895). It was squashed, so the upstream ancestry is missing. Of the upstream tags, only 4.18.1 is an ancestor of scylla-4.x. git merge-base 4.19.3 scylla-4.x resolves to db4c8075e, and 102 upstream commits cannot be reached by SHA, although most of their content has already landed.

Upstream changes (4.19.2 → 4.19.4)

4.19.2 → 4.19.3

  • LZ4 and Netty bumps for a CVE. This conflicts with our pin; keep our Netty 4.1.138.Final.
  • Fix a race condition in ClockSeqAndNodeContainer
  • CASSJAVA-3: fix the ordering of the LIMIT and PER PARTITION LIMIT clauses
  • Move ordering-clause support behind a single OrderingClause abstraction
  • CASSJAVA-108: update ESRI and drop org.json; Jackson 2.20.1; Logback to the newest release that supports Java 8
  • CASSJAVA-122: fix the OSGi LZ4 test; CASSJAVA-104: fix flaky tests
  • CASSJAVA-109, CASSJAVA-117, CASSJAVA-30: docs and CONTRIBUTING updates after the donation

4.19.3 → 4.19.4

  • CASSJAVA-136: fix equality for Geometry subclasses
  • CASSJAVA-137: Netty 4.1.138. The fork already pins this version.
  • CASSJAVA-131: Jenkinsfile retention; add a pointer from AGENTS.md to SECURITY; changelog and pom ninja-fixes

Conflict resolution rules

  1. Keep the com.scylladb groupId, since upstream now uses org.apache.cassandra.
  2. Where our dependency pin is higher than upstream's, keep ours.
  3. changelog/README.md takes upstream's entries only.

Preserving tag continuity

A ruleset on scylla-4.x enforces required_linear_history. Squash and rebase merges both drop the upstream ancestry, so every later sync works from the 4.18.1 base and hits conflicts that are not real.

  1. Build the branch from scylla-4.x without rebasing:
    git merge -s ours 4.19.2 -m "Record upstream 4.19.2 ancestry (content landed squashed in #895)"
    git merge --no-ff 4.19.3   # resolve with the rules above
    git merge --no-ff 4.19.4
    
    Make the version bump a separate commit. The -s ours merge changes no files. It only records the missing parent for 4.19.0 through 4.19.2, which moves the merge-base so the conflicts that remain are real ones.
  2. Never rebase or squash the PR branch. To pick up new scylla-4.x commits, merge scylla-4.x into the branch.
  3. Merge the PR with Create a merge commit. Beforehand, a repo admin has to bypass required_linear_history for this PR, and restore it afterwards. Name the admin here before the sprint starts.
  4. After the merge, each of these must exit 0:
    git merge-base --is-ancestor 4.19.2 origin/scylla-4.x
    git merge-base --is-ancestor 4.19.3 origin/scylla-4.x
    git merge-base --is-ancestor 4.19.4 origin/scylla-4.x
    
    git describe --tags --match '4.19.[0-9]' --abbrev=0 origin/scylla-4.x should print 4.19.4 (the fork's own 4.19.x.y tags match 4.19.*, so the wider glob never does).

Fallback if the bypass is not possible: perform the same merges locally, then squash. The ancestry is lost again, but this merge stays cheap.

Tasks

Refs: DRIVER-1126

Activity

  1. self-assigned this
    on Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions