Skip to content

Commit 65986be

Browse files
authored
Merge branch '9.0' into backport-9.0-esql-async-headers-fix
2 parents 7bbed70 + 2b9f7f9 commit 65986be

File tree

68 files changed

+1506
-513
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1506
-513
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.gradle.internal.transport
11+
12+
import org.gradle.testkit.runner.BuildResult
13+
import org.gradle.testkit.runner.GradleRunner
14+
import org.gradle.testkit.runner.TaskOutcome
15+
16+
class ResolveTransportVersionConflictFuncTest extends AbstractTransportVersionFuncTest {
17+
18+
GradleRunner runResolveAndValidateTask() {
19+
List<String> args = List.of(":myserver:validateTransportVersionResources", ":myserver:resolveTransportVersionConflict")
20+
return gradleRunner(args.toArray())
21+
}
22+
23+
void assertResolveAndValidateSuccess(BuildResult result) {
24+
assert result.task(":myserver:resolveTransportVersionConflict").outcome == TaskOutcome.SUCCESS
25+
assert result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS
26+
}
27+
28+
def "update flag works with current"() {
29+
given:
30+
referableAndReferencedTransportVersion("new_tv", "8123000")
31+
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
32+
"""
33+
<<<<<<< HEAD
34+
existing_92,8123000
35+
=======
36+
new_tv,8123000
37+
>>>>>> name
38+
""".strip()
39+
40+
when:
41+
def result = runResolveAndValidateTask().build()
42+
43+
then:
44+
assertResolveAndValidateSuccess(result)
45+
assertReferableDefinition("existing_92", "8123000,8012001")
46+
assertReferableDefinition("new_tv", "8124000")
47+
assertUpperBound("9.2", "new_tv,8124000")
48+
}
49+
50+
def "update flag works with multiple branches"() {
51+
given:
52+
referableAndReferencedTransportVersion("new_tv", "8123000,8012001,7123001")
53+
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
54+
"""
55+
<<<<<<< HEAD
56+
existing_92,8123000
57+
=======
58+
new_tv,8123000
59+
>>>>>> name
60+
""".strip()
61+
file("myserver/src/main/resources/transport/latest/9.1.csv").text =
62+
"""
63+
<<<<<<< HEAD
64+
existing_92,8012001
65+
=======
66+
new_tv,8012001
67+
>>>>>> name
68+
""".strip()
69+
file("myserver/src/main/resources/transport/latest/8.19.csv").text =
70+
"""
71+
<<<<<<< HEAD
72+
initial_8.19.7,7123001
73+
=======
74+
new_tv,7123001
75+
>>>>>> name
76+
""".strip()
77+
78+
when:
79+
def result = runResolveAndValidateTask().build()
80+
81+
then:
82+
assertResolveAndValidateSuccess(result)
83+
assertReferableDefinition("existing_92", "8123000,8012001")
84+
assertUnreferableDefinition("initial_8.19.7", "7123001")
85+
assertReferableDefinition("new_tv", "8124000,8012002,7123002")
86+
assertUpperBound("9.2", "new_tv,8124000")
87+
assertUpperBound("9.1", "new_tv,8012002")
88+
assertUpperBound("8.19", "new_tv,7123002")
89+
}
90+
91+
def "no new transport version is idempotent"() {
92+
when:
93+
def result = runResolveAndValidateTask().build()
94+
95+
then:
96+
assertResolveAndValidateSuccess(result)
97+
assertUpperBound("9.2", "existing_92,8123000")
98+
}
99+
}

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

Lines changed: 13 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
1919
List<String> args = new ArrayList<>()
2020
args.add(":myserver:validateTransportVersionResources")
2121
args.add(":myserver:generateTransportVersion")
22-
args.addAll(additionalArgs);
22+
args.addAll(additionalArgs)
2323
return gradleRunner(args.toArray())
2424
}
2525

2626
def runGenerateTask(String... additionalArgs) {
2727
List<String> args = new ArrayList<>()
2828
args.add(":myserver:generateTransportVersion")
29-
args.addAll(additionalArgs);
29+
args.addAll(additionalArgs)
3030
return gradleRunner(args.toArray())
3131
}
3232

@@ -90,6 +90,9 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
9090
assertUpperBound("9.2", "new_tv,8124000")
9191
}
9292

93+
/*
94+
temporarily muted, see https://github.com/elastic/elasticsearch/pull/135226
95+
9396
def "invalid changes to a upper bounds should be reverted"() {
9497
given:
9598
transportVersionUpperBound("9.2", "modification", "9000000")
@@ -144,7 +147,7 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
144147
assertReferableDefinitionDoesNotExist("test_tv")
145148
assertUpperBound("9.2", "existing_92,8123000")
146149
assertUpperBound("9.1", "existing_92,8012001")
147-
}
150+
}*/
148151

149152
def "a reference can be renamed"() {
150153
given:
@@ -242,8 +245,11 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
242245
def "unreferenced definitions are removed"() {
243246
given:
244247
referableTransportVersion("test_tv", "8124000,8012002")
248+
/*
249+
TODO: reset of upper bounds
245250
transportVersionUpperBound("9.2", "test_tv", "8124000")
246251
transportVersionUpperBound("9.1", "test_tv", "8012002")
252+
*/
247253

248254
when:
249255
def result = runGenerateAndValidateTask().build()
@@ -277,77 +283,6 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
277283
assertUpperBound("9.2", "second_tv,8124000")
278284
}
279285

280-
def "update flag works with current"() {
281-
given:
282-
referableAndReferencedTransportVersion("new_tv", "8123000")
283-
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
284-
"""
285-
<<<<<<< HEAD
286-
existing_92,8123000
287-
=======
288-
new_tv,8123000
289-
>>>>>> name
290-
""".strip()
291-
292-
when:
293-
def result = runGenerateAndValidateTask("--resolve-conflict").build()
294-
295-
then:
296-
assertGenerateAndValidateSuccess(result)
297-
assertReferableDefinition("existing_92", "8123000,8012001")
298-
assertReferableDefinition("new_tv", "8124000")
299-
assertUpperBound("9.2", "new_tv,8124000")
300-
}
301-
302-
def "update flag works with multiple branches"() {
303-
given:
304-
referableAndReferencedTransportVersion("new_tv", "8123000,8012001,7123001")
305-
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
306-
"""
307-
<<<<<<< HEAD
308-
existing_92,8123000
309-
=======
310-
new_tv,8123000
311-
>>>>>> name
312-
""".strip()
313-
file("myserver/src/main/resources/transport/latest/9.1.csv").text =
314-
"""
315-
<<<<<<< HEAD
316-
existing_92,8012001
317-
=======
318-
new_tv,8012001
319-
>>>>>> name
320-
""".strip()
321-
file("myserver/src/main/resources/transport/latest/8.19.csv").text =
322-
"""
323-
<<<<<<< HEAD
324-
initial_8.19.7,7123001
325-
=======
326-
new_tv,7123001
327-
>>>>>> name
328-
""".strip()
329-
330-
when:
331-
def result = runGenerateAndValidateTask("--resolve-conflict").build()
332-
333-
then:
334-
assertGenerateAndValidateSuccess(result)
335-
assertReferableDefinition("existing_92", "8123000,8012001")
336-
assertUnreferableDefinition("initial_8.19.7", "7123001")
337-
assertReferableDefinition("new_tv", "8124000,8012002,7123002")
338-
assertUpperBound("9.2", "new_tv,8124000")
339-
assertUpperBound("9.1", "new_tv,8012002")
340-
assertUpperBound("8.19", "new_tv,7123002")
341-
}
342-
343-
def "update flag cannot be used with backport branches"() {
344-
when:
345-
def result = runGenerateTask("--resolve-conflict", "--backport-branches=9.1").buildAndFail()
346-
347-
then:
348-
assertGenerateFailure(result, "Cannot use --resolve-conflict with --backport-branches")
349-
}
350-
351286
def "branches param order does not matter"() {
352287
given:
353288
referencedTransportVersion("test_tv")
@@ -477,6 +412,8 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
477412
assertUpperBound("9.2", "new_tv,8124000")
478413
}
479414

415+
/*
416+
TODO: reset of upper bounds
480417
def "deleted upper bounds files are restored"() {
481418
given:
482419
file("myserver/src/main/resources/transport/upper_bounds/9.2.csv").delete()
@@ -487,11 +424,11 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
487424
then:
488425
assertGenerateAndValidateSuccess(result)
489426
assertUpperBound("9.2", "existing_92,8123000")
490-
}
427+
}*/
491428

492429
def "upper bounds files must exist for backport branches"() {
493430
when:
494-
def result = runGenerateTask("--backport-branches=9.1,8.13,7.17,6.0").buildAndFail()
431+
def result = runGenerateTask("--name", "new_tv", "--backport-branches=9.1,8.13,7.17,6.0").buildAndFail()
495432

496433
then:
497434
assertGenerateFailure(result, "Missing upper bounds files for branches [6.0, 7.17, 8.13], known branches are [8.19, 9.0, 9.1, 9.2]")

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/InternalDistributionDownloadPlugin.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ private void registerInternalDistributionResolutions(List<DistributionResolution
113113
String versionProperty = System.getProperty("tests.bwc.main.version");
114114
// We use this phony version as a placeholder for the real version
115115
if (distribution.getVersion().equals("0.0.0")) {
116+
if (versionProperty == null) {
117+
throw new GradleException("System property 'tests.bwc.main.version' expected for building bwc version.");
118+
}
116119
BwcVersions.UnreleasedVersionInfo unreleasedVersionInfo = new BwcVersions.UnreleasedVersionInfo(
117120
Version.fromString(versionProperty),
118121
"main",

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestBasePlugin.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,14 @@
4444
import org.gradle.api.file.FileCollection;
4545
import org.gradle.api.file.FileTree;
4646
import org.gradle.api.internal.artifacts.dependencies.ProjectDependencyInternal;
47+
import org.gradle.api.plugins.JvmToolchainsPlugin;
4748
import org.gradle.api.provider.ProviderFactory;
4849
import org.gradle.api.tasks.ClasspathNormalizer;
4950
import org.gradle.api.tasks.PathSensitivity;
5051
import org.gradle.api.tasks.util.PatternFilterable;
52+
import org.gradle.jvm.toolchain.JavaLanguageVersion;
53+
import org.gradle.jvm.toolchain.JavaToolchainService;
54+
import org.gradle.jvm.toolchain.JvmVendorSpec;
5155

5256
import java.util.Collection;
5357
import java.util.Iterator;
@@ -59,6 +63,7 @@
5963
import javax.inject.Inject;
6064

6165
import static org.elasticsearch.gradle.internal.util.ParamsUtils.loadBuildParams;
66+
import static org.elasticsearch.gradle.util.OsUtils.jdkIsIncompatibleWithOS;
6267

6368
/**
6469
* Base plugin used for wiring up build tasks to REST testing tasks using new JUnit rule-based test clusters framework.
@@ -94,6 +99,7 @@ public RestTestBasePlugin(ProviderFactory providerFactory) {
9499
public void apply(Project project) {
95100
project.getPluginManager().apply(ElasticsearchJavaBasePlugin.class);
96101
project.getPluginManager().apply(InternalDistributionDownloadPlugin.class);
102+
project.getPluginManager().apply(JvmToolchainsPlugin.class);
97103
var bwcVersions = loadBuildParams(project).get().getBwcVersions();
98104

99105
// Register integ-test and default distributions
@@ -227,6 +233,17 @@ public Void call(Object... args) {
227233
String versionString = version.toString();
228234
ElasticsearchDistribution bwcDistro = createDistribution(project, "bwc_" + versionString, versionString);
229235

236+
if (jdkIsIncompatibleWithOS(Version.fromString(versionString))) {
237+
var toolChainService = project.getExtensions().getByType(JavaToolchainService.class);
238+
var fallbackJdk17Launcher = toolChainService.launcherFor(spec -> {
239+
spec.getVendor().set(JvmVendorSpec.ADOPTIUM);
240+
spec.getLanguageVersion().set(JavaLanguageVersion.of(17));
241+
});
242+
task.environment(
243+
"ES_FALLBACK_JAVA_HOME",
244+
fallbackJdk17Launcher.get().getMetadata().getInstallationPath().getAsFile().getPath()
245+
);
246+
}
230247
task.dependsOn(bwcDistro);
231248
registerDistributionInputs(task, bwcDistro);
232249

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,7 @@ public abstract class GenerateTransportVersionDefinitionTask extends DefaultTask
7474

7575
@Input
7676
@Optional
77-
@Option(
78-
option = "resolve-conflict",
79-
description = "Regenerate the transport version currently being added to upstream to resolve a merge conflict"
80-
)
81-
public abstract Property<Boolean> getResolveConflict();
77+
abstract Property<Boolean> getResolveConflict();
8278

8379
/**
8480
* The name of the upper bounds file which will be used at runtime on the current branch. Normally
@@ -102,13 +98,14 @@ public void run() throws IOException {
10298
List<String> changedDefinitionNames = resources.getChangedReferableDefinitionNames();
10399
String targetDefinitionName = getTargetDefinitionName(resources, referencedNames, changedDefinitionNames);
104100

105-
List<TransportVersionUpperBound> upstreamUpperBounds = resources.getUpperBoundsFromUpstream();
106-
Set<String> targetUpperBoundNames = getTargetUpperBoundNames(resources, upstreamUpperBounds, targetDefinitionName);
107-
108101
getLogger().lifecycle("Generating transport version name: " + targetDefinitionName);
109102
if (targetDefinitionName.isEmpty()) {
110-
resetAllUpperBounds(resources);
103+
// TODO: resetting upper bounds needs to be done locally, otherwise it pulls in some (incomplete) changes from upstream main
104+
// resetAllUpperBounds(resources);
111105
} else {
106+
List<TransportVersionUpperBound> upstreamUpperBounds = resources.getUpperBoundsFromUpstream();
107+
Set<String> targetUpperBoundNames = getTargetUpperBoundNames(resources, upstreamUpperBounds, targetDefinitionName);
108+
112109
List<TransportVersionId> ids = updateUpperBounds(resources, upstreamUpperBounds, targetUpperBoundNames, targetDefinitionName);
113110
// (Re)write the definition file.
114111
resources.writeDefinition(new TransportVersionDefinition(targetDefinitionName, ids, true));

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.gradle.api.Project;
2020
import org.gradle.api.file.Directory;
2121
import org.gradle.api.plugins.JavaPlugin;
22+
import org.gradle.api.provider.Provider;
2223
import org.gradle.api.tasks.Copy;
2324
import org.gradle.language.base.plugins.LifecycleBasePlugin;
2425

@@ -49,9 +50,9 @@ public void apply(Project project) {
4950
Directory transportResources = project.getLayout().getProjectDirectory().dir("src/main/resources/" + resourceRoot);
5051
spec.getParameters().getTransportResourcesDirectory().set(transportResources);
5152
spec.getParameters().getRootDirectory().set(project.getLayout().getSettingsDirectory().getAsFile());
52-
Object upstreamRef = project.findProperty("org.elasticsearch.transport.upstreamRef");
53-
if (upstreamRef != null) {
54-
spec.getParameters().getUpstreamRefOverride().set(upstreamRef.toString());
53+
Provider<String> upstreamRef = project.getProviders().gradleProperty("org.elasticsearch.transport.upstreamRef");
54+
if (upstreamRef.isPresent()) {
55+
spec.getParameters().getUpstreamRefOverride().set(upstreamRef.get());
5556
}
5657
});
5758

@@ -120,10 +121,7 @@ public void apply(Project project) {
120121
}
121122

122123
private static String getResourceRoot(Project project) {
123-
var resourceRoot = project.findProperty("org.elasticsearch.transport.resourceRoot");
124-
if (resourceRoot == null) {
125-
resourceRoot = "transport";
126-
}
127-
return resourceRoot.toString();
124+
Provider<String> resourceRootProperty = project.getProviders().gradleProperty("org.elasticsearch.transport.resourceRoot");
125+
return resourceRootProperty.isPresent() ? resourceRootProperty.get() : "transport";
128126
}
129127
}

0 commit comments

Comments
 (0)