diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy index 861b7a11b8f1a..712ac849222ad 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy @@ -294,4 +294,21 @@ class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTes then: result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS } + + def "only current upper bound validated on release branch"() { + given: + file("myserver/build.gradle") << """ + tasks.named('validateTransportVersionResources') { + currentUpperBoundName = '9.0' + } + """ + referableAndReferencedTransportVersion("some_tv", "8124000,8012004") + transportVersionUpperBound("9.1", "some_tv", "8012004") + + when: + def result = gradleRunner("validateTransportVersionResources").build() + + then: + result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS + } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java index 03a22cc586fc7..9bf97337287e7 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java @@ -83,6 +83,7 @@ public void validateTransportVersions() throws IOException { Map allDefinitions = collectAllDefinitions(referableDefinitions, unreferableDefinitions); Map> idsByBase = collectIdsByBase(allDefinitions.values()); Map upperBounds = resources.getUpperBounds(); + TransportVersionUpperBound currentUpperBound = upperBounds.get(getCurrentUpperBoundName().get()); boolean onReleaseBranch = checkIfDefinitelyOnReleaseBranch(upperBounds); for (var definition : referableDefinitions.values()) { @@ -94,14 +95,21 @@ public void validateTransportVersions() throws IOException { } for (var entry : idsByBase.entrySet()) { - validateBase(entry.getKey(), entry.getValue()); + int baseId = entry.getKey(); + // on main we validate all bases, but on release branches we only validate up to the current upper bound + if (onReleaseBranch == false || baseId <= currentUpperBound.definitionId().base()) { + validateBase(baseId, entry.getValue()); + } } - for (var upperBound : upperBounds.values()) { - validateUpperBound(upperBound, allDefinitions, idsByBase); - } + if (onReleaseBranch) { + // on release branches we only check the current upper bound, others may be inaccurate + validateUpperBound(currentUpperBound, allDefinitions, idsByBase); + } else { + for (var upperBound : upperBounds.values()) { + validateUpperBound(upperBound, allDefinitions, idsByBase); + } - if (onReleaseBranch == false) { validatePrimaryIds(resources, upperBounds, allDefinitions); } }