Skip to content

Commit edb30d0

Browse files
committed
Only validate upper bound of current branch on release branches (elastic#135391)
When transport version changes are backported they may carry along multiple upper bounds files that have been updated. Yet in release branches the only upper bound file that matter is that of the current branch. This commit adjusts validation on release branches to only check the current upper bound file.
1 parent 2d1e5d3 commit edb30d0

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,21 @@ class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTes
294294
then:
295295
result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS
296296
}
297+
298+
def "only current upper bound validated on release branch"() {
299+
given:
300+
file("myserver/build.gradle") << """
301+
tasks.named('validateTransportVersionResources') {
302+
currentUpperBoundName = '9.0'
303+
}
304+
"""
305+
referableAndReferencedTransportVersion("some_tv", "8124000,8012004")
306+
transportVersionUpperBound("9.1", "some_tv", "8012004")
307+
308+
when:
309+
def result = gradleRunner("validateTransportVersionResources").build()
310+
311+
then:
312+
result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS
313+
}
297314
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public void validateTransportVersions() throws IOException {
8383
Map<String, TransportVersionDefinition> allDefinitions = collectAllDefinitions(referableDefinitions, unreferableDefinitions);
8484
Map<Integer, List<IdAndDefinition>> idsByBase = collectIdsByBase(allDefinitions.values());
8585
Map<String, TransportVersionUpperBound> upperBounds = resources.getUpperBounds();
86+
TransportVersionUpperBound currentUpperBound = upperBounds.get(getCurrentUpperBoundName().get());
8687
boolean onReleaseBranch = checkIfDefinitelyOnReleaseBranch(upperBounds);
8788

8889
for (var definition : referableDefinitions.values()) {
@@ -94,14 +95,21 @@ public void validateTransportVersions() throws IOException {
9495
}
9596

9697
for (var entry : idsByBase.entrySet()) {
97-
validateBase(entry.getKey(), entry.getValue());
98+
int baseId = entry.getKey();
99+
// on main we validate all bases, but on release branches we only validate up to the current upper bound
100+
if (onReleaseBranch == false || baseId <= currentUpperBound.definitionId().base()) {
101+
validateBase(baseId, entry.getValue());
102+
}
98103
}
99104

100-
for (var upperBound : upperBounds.values()) {
101-
validateUpperBound(upperBound, allDefinitions, idsByBase);
102-
}
105+
if (onReleaseBranch) {
106+
// on release branches we only check the current upper bound, others may be inaccurate
107+
validateUpperBound(currentUpperBound, allDefinitions, idsByBase);
108+
} else {
109+
for (var upperBound : upperBounds.values()) {
110+
validateUpperBound(upperBound, allDefinitions, idsByBase);
111+
}
103112

104-
if (onReleaseBranch == false) {
105113
validatePrimaryIds(resources, upperBounds, allDefinitions);
106114
}
107115
}

0 commit comments

Comments
 (0)