Skip to content

3.x: CCMBridge passes scylla.version to ccm without fully qualifying it #1046

Description

@nikagra

driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java:210-214 (branch scylla-3.x)
builds the ccm -v argument from the raw scylla.version system property:

} else if (inputScyllaVersion != null && !inputScyllaVersion.trim().isEmpty()) {
  installArgs.add(" --scylla ");
  if (isVersionNumber(inputScyllaVersion)) {
    installArgs.add("-v release:" + inputScyllaVersion);

isVersionNumber delegates to VersionNumber.parse, which accepts a two-component version, so
mvn verify -Pshort -Dscylla.version=2026.2 reaches ccm as -v release:2026.2. CCM caches the
downloaded release under its full version but looks it up under the string it was given, so that
lookup never hits the cache and every ccm create re-queries S3 for the newest patch — the
slowdown described in DRIVER-920. CONTRIBUTING.md:115 documents -Dscylla.version= without
saying the value must be fully qualified.

#1044 closes this for anything driven through make, which is why this was split out: the
remaining exposure is a hand-run mvn.

Suggested fix: reject a numeric-but-partial scylla.version with a message naming the required
MAJOR.MINOR.PATCH form and the reason. Note that 4.x instead coerces silently — Version.toString()
turns 2026.2 into release:2026.2.0 (CcmBridge.java:339-347) — which is fast but pins a
different release than the user asked for; do not copy that behaviour here.

Found while auditing version resolution for DRIVER-925.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    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