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.
driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java:210-214(branchscylla-3.x)builds the ccm
-vargument from the rawscylla.versionsystem property:isVersionNumberdelegates toVersionNumber.parse, which accepts a two-component version, somvn verify -Pshort -Dscylla.version=2026.2reaches ccm as-v release:2026.2. CCM caches thedownloaded 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 createre-queries S3 for the newest patch — theslowdown described in DRIVER-920.
CONTRIBUTING.md:115documents-Dscylla.version=withoutsaying the value must be fully qualified.
#1044 closes this for anything driven through
make, which is why this was split out: theremaining exposure is a hand-run
mvn.Suggested fix: reject a numeric-but-partial
scylla.versionwith a message naming the requiredMAJOR.MINOR.PATCHform and the reason. Note that 4.x instead coerces silently —Version.toString()turns
2026.2intorelease:2026.2.0(CcmBridge.java:339-347) — which is fast but pins adifferent release than the user asked for; do not copy that behaviour here.
Found while auditing version resolution for DRIVER-925.