Skip to content

Revapi does not resolve four-component Scylla release baselines #1052

Description

@dkropachev

Problem

Revapi is configured with a three-component release pattern:

<versionFormat>\d+\.\d+\.\d+</versionFormat>

Scylla Java Driver releases use four components (for example 4.19.2.1). As a result, the dynamic RELEASE old artifact cannot select any published version.

Observed output on 4.19.2.2-SNAPSHOT:

Failed to resolve old artifacts: Failed to find a version of artifact
'com.scylladb:java-driver-core:RELEASE' that would correspond to an expression
'\d+\.\d+\.\d+'. The versions found were: [4.19.2.1, 4.19.2.1-SNAPSHOT,
4.19.2.0, ...]

Revapi then reports success while comparing against no old API, allowing binary-incompatible changes to pass unnoticed.

Suggested fix

Accept the fourth version component:

<versionFormat>\d+\.\d+\.\d+(?:\.\d+)?</versionFormat>

Also consider pinning the old artifact to the previous published version in release branches, so a later publication cannot silently change the comparison baseline.

Verification

Run:

mvn -pl core revapi:check

The log should identify the resolved old artifact explicitly and report incompatible API changes relative to it.

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