Skip to content

Commit 40ea029

Browse files
committed
Merge branch 'master' into peer-recovery-retention-leases
2 parents b8bcc0b + 1c384fb commit 40ea029

File tree

1,926 files changed

+26294
-12969
lines changed

Some content is hidden

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

1,926 files changed

+26294
-12969
lines changed

.ci/bwcVersions

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
BWC_VERSION:
2+
- "7.0.0"
3+
- "7.0.1"
4+
- "7.1.0"
5+
- "7.1.1"
6+
- "7.2.0"
7+
- "7.2.1"
8+
- "7.3.0"
9+
- "7.4.0"
10+
- "8.0.0"

build.gradle

+21-8
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,13 @@ import org.gradle.util.DistributionLocator
2929
import org.gradle.plugins.ide.eclipse.model.SourceFolder
3030

3131
plugins {
32-
id 'com.gradle.build-scan' version '2.2.1'
32+
id 'com.gradle.build-scan' version '2.3'
3333
id 'base'
3434
id 'elasticsearch.global-build-info'
3535
}
36-
if (Boolean.valueOf(project.findProperty('org.elasticsearch.acceptScanTOS') ?: "false")) {
37-
buildScan {
38-
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
39-
termsOfServiceAgree = 'yes'
40-
}
41-
}
36+
37+
apply plugin: 'nebula.info-scm'
38+
apply from: 'gradle/build-scan.gradle'
4239

4340
// common maven publishing configuration
4441
allprojects {
@@ -49,7 +46,6 @@ allprojects {
4946

5047
BuildPlugin.configureRepositories(project)
5148

52-
apply plugin: 'nebula.info-scm'
5349
String licenseCommit
5450
if (VersionProperties.elasticsearch.toString().endsWith('-SNAPSHOT')) {
5551
licenseCommit = scminfo.change ?: "master" // leniency for non git builds
@@ -107,6 +103,17 @@ subprojects {
107103
* logic in VersionUtils.java. */
108104
BwcVersions versions = new BwcVersions(file('server/src/main/java/org/elasticsearch/Version.java').readLines('UTF-8'))
109105

106+
task updateCIBwcVersions() {
107+
doLast {
108+
File yml = file(".ci/bwcVersions")
109+
yml.text = ""
110+
yml << "BWC_VERSION:\n"
111+
versions.indexCompatible.each {
112+
yml << " - \"$it\"\n"
113+
}
114+
}
115+
}
116+
110117
// build metadata from previous build, contains eg hashes for bwc builds
111118
String buildMetadataValue = System.getenv('BUILD_METADATA')
112119
if (buildMetadataValue == null) {
@@ -150,6 +157,12 @@ task verifyVersions {
150157
.collect { Version.fromString(it) }
151158
)
152159
}
160+
String ciYml = file(".ci/bwcVersions").text
161+
bwcVersions.indexCompatible.each {
162+
if (ciYml.contains("\"$it\"\n") == false) {
163+
throw new Exception(".ci/bwcVersions is outdated, run `./gradlew updateCIBwcVersions` and check in the results");
164+
}
165+
}
153166
}
154167
}
155168

buildSrc/src/main/groovy/org/elasticsearch/gradle/doc/DocsTestPlugin.groovy

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@ package org.elasticsearch.gradle.doc
2121
import org.elasticsearch.gradle.OS
2222
import org.elasticsearch.gradle.Version
2323
import org.elasticsearch.gradle.VersionProperties
24-
import org.elasticsearch.gradle.test.ClusterFormationTasks
2524
import org.elasticsearch.gradle.test.RestTestPlugin
2625
import org.gradle.api.Project
2726
import org.gradle.api.Task
28-
2927
/**
3028
* Sets up tests for documentation.
3129
*/
@@ -38,7 +36,7 @@ public class DocsTestPlugin extends RestTestPlugin {
3836
super.apply(project)
3937
String distribution = System.getProperty('tests.distribution', 'default')
4038
// The distribution can be configured with -Dtests.distribution on the command line
41-
project.testClusters.integTest.distribution = distribution.toUpperCase()
39+
project.testClusters.integTest.testDistribution = distribution.toUpperCase()
4240
project.testClusters.integTest.nameCustomization = { it.replace("integTest", "node") }
4341
// Docs are published separately so no need to assemble
4442
project.tasks.assemble.enabled = false

buildSrc/src/main/groovy/org/elasticsearch/gradle/doc/RestTestsFromSnippetsTask.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ public class RestTestsFromSnippetsTask extends SnippetsTask {
353353

354354
private void testSetup(Snippet snippet) {
355355
if (lastDocsPath == snippet.path) {
356-
throw new InvalidUserDataException("$snippet: wasn't first")
356+
throw new InvalidUserDataException("$snippet: wasn't first. TESTSETUP can only be used in the first snippet of a document.")
357357
}
358358
setupCurrent(snippet)
359359
current.println('---')

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/RestIntegTestTask.groovy

+1-5
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,14 @@
1818
*/
1919
package org.elasticsearch.gradle.test
2020

21-
import org.elasticsearch.gradle.VersionProperties
21+
2222
import org.elasticsearch.gradle.testclusters.ElasticsearchCluster
2323
import org.elasticsearch.gradle.testclusters.TestClustersPlugin
2424
import org.gradle.api.DefaultTask
2525
import org.gradle.api.Task
2626
import org.gradle.api.execution.TaskExecutionAdapter
2727
import org.gradle.api.logging.Logger
2828
import org.gradle.api.logging.Logging
29-
import org.gradle.api.specs.Specs
3029
import org.gradle.api.tasks.Copy
3130
import org.gradle.api.tasks.Input
3231
import org.gradle.api.tasks.TaskState
@@ -37,7 +36,6 @@ import org.gradle.plugins.ide.idea.IdeaPlugin
3736
import java.nio.charset.StandardCharsets
3837
import java.nio.file.Files
3938
import java.util.stream.Stream
40-
4139
/**
4240
* A wrapper task around setting up a cluster and running rest tests.
4341
*/
@@ -69,8 +67,6 @@ class RestIntegTestTask extends DefaultTask {
6967
} else {
7068
project.testClusters {
7169
"$name" {
72-
distribution = 'INTEG_TEST'
73-
version = VersionProperties.elasticsearch
7470
javaHome = project.file(project.ext.runtimeJavaHome)
7571
}
7672
}

buildSrc/src/main/java/org/elasticsearch/gradle/Distribution.java

-80
This file was deleted.

buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
*/
5555
public class DistributionDownloadPlugin implements Plugin<Project> {
5656

57+
private static final String CONTAINER_NAME = "elasticsearch_distributions";
5758
private static final String FAKE_IVY_GROUP = "elasticsearch-distribution";
5859
private static final String DOWNLOAD_REPO_NAME = "elasticsearch-downloads";
5960

@@ -67,7 +68,7 @@ public void apply(Project project) {
6768
Configuration extractedConfiguration = project.getConfigurations().create("es_distro_extracted_" + name);
6869
return new ElasticsearchDistribution(name, project.getObjects(), fileConfiguration, extractedConfiguration);
6970
});
70-
project.getExtensions().add("elasticsearch_distributions", distributionsContainer);
71+
project.getExtensions().add(CONTAINER_NAME, distributionsContainer);
7172

7273
setupDownloadServiceRepo(project);
7374

@@ -78,6 +79,11 @@ public void apply(Project project) {
7879
project.afterEvaluate(this::setupDistributions);
7980
}
8081

82+
@SuppressWarnings("unchecked")
83+
public static NamedDomainObjectContainer<ElasticsearchDistribution> getContainer(Project project) {
84+
return (NamedDomainObjectContainer<ElasticsearchDistribution>) project.getExtensions().getByName(CONTAINER_NAME);
85+
}
86+
8187
// pkg private for tests
8288
void setupDistributions(Project project) {
8389
for (ElasticsearchDistribution distribution : distributionsContainer) {

buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@
2020
package org.elasticsearch.gradle;
2121

2222
import org.gradle.api.Buildable;
23+
import org.gradle.api.Project;
2324
import org.gradle.api.artifacts.Configuration;
25+
import org.gradle.api.file.FileTree;
2426
import org.gradle.api.model.ObjectFactory;
2527
import org.gradle.api.provider.Property;
2628
import org.gradle.api.tasks.TaskDependency;
2729

2830
import java.io.File;
2931
import java.util.Iterator;
3032
import java.util.Locale;
33+
import java.util.concurrent.Callable;
3134

3235
public class ElasticsearchDistribution implements Buildable {
3336

@@ -65,7 +68,7 @@ public String toString() {
6568
}
6669

6770
// package private to tests can use
68-
static final Platform CURRENT_PLATFORM = OS.<Platform>conditional()
71+
public static final Platform CURRENT_PLATFORM = OS.<Platform>conditional()
6972
.onLinux(() -> Platform.LINUX)
7073
.onWindows(() -> Platform.WINDOWS)
7174
.onMac(() -> Platform.DARWIN)
@@ -90,6 +93,10 @@ public TaskDependency getBuildDependencies() {
9093
return configuration.getBuildDependencies();
9194
}
9295

96+
public FileTree getFileTree(Project project) {
97+
return project.fileTree((Callable<File>) configuration::getSingleFile);
98+
}
99+
93100
@Override
94101
public String toString() {
95102
return configuration.getSingleFile().toString();

buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTask.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
*/
1919
package org.elasticsearch.gradle.precommit;
2020

21+
import de.thetaphi.forbiddenapis.cli.CliMain;
2122
import org.apache.commons.io.output.NullOutputStream;
2223
import org.elasticsearch.gradle.JdkJarHellCheck;
24+
import org.elasticsearch.gradle.OS;
2325
import org.gradle.api.DefaultTask;
2426
import org.gradle.api.GradleException;
2527
import org.gradle.api.JavaVersion;
@@ -51,6 +53,7 @@
5153
import java.nio.file.Files;
5254
import java.util.Arrays;
5355
import java.util.Collections;
56+
import java.util.List;
5457
import java.util.Set;
5558
import java.util.TreeSet;
5659
import java.util.regex.Matcher;
@@ -69,6 +72,12 @@ public class ThirdPartyAuditTask extends DefaultTask {
6972
private static final Pattern VIOLATION_PATTERN = Pattern.compile(
7073
"\\s\\sin ([a-zA-Z0-9$.]+) \\(.*\\)"
7174
);
75+
private static final int SIG_KILL_EXIT_VALUE = 137;
76+
private static final List<Integer> EXPECTED_EXIT_CODES = Arrays.asList(
77+
CliMain.EXIT_SUCCESS,
78+
CliMain.EXIT_VIOLATION,
79+
CliMain.EXIT_UNSUPPORTED_JDK
80+
);
7281

7382
private Set<String> missingClassExcludes = new TreeSet<>();
7483

@@ -327,7 +336,7 @@ private String formatClassList(Set<String> classList) {
327336

328337
private String runForbiddenAPIsCli() throws IOException {
329338
ByteArrayOutputStream errorOut = new ByteArrayOutputStream();
330-
getProject().javaexec(spec -> {
339+
ExecResult result = getProject().javaexec(spec -> {
331340
if (javaHome != null) {
332341
spec.setExecutable(javaHome + "/bin/java");
333342
}
@@ -336,6 +345,7 @@ private String runForbiddenAPIsCli() throws IOException {
336345
getRuntimeConfiguration(),
337346
getProject().getConfigurations().getByName("compileOnly")
338347
);
348+
spec.jvmArgs("-Xmx1g");
339349
spec.setMain("de.thetaphi.forbiddenapis.cli.CliMain");
340350
spec.args(
341351
"-f", getSignatureFile().getAbsolutePath(),
@@ -348,10 +358,18 @@ private String runForbiddenAPIsCli() throws IOException {
348358
}
349359
spec.setIgnoreExitValue(true);
350360
});
361+
if (OS.current().equals(OS.LINUX) && result.getExitValue() == SIG_KILL_EXIT_VALUE) {
362+
throw new IllegalStateException(
363+
"Third party audit was killed buy SIGKILL, could be a victim of the Linux OOM killer"
364+
);
365+
}
351366
final String forbiddenApisOutput;
352367
try (ByteArrayOutputStream outputStream = errorOut) {
353368
forbiddenApisOutput = outputStream.toString(StandardCharsets.UTF_8.name());
354369
}
370+
if (EXPECTED_EXIT_CODES.contains(result.getExitValue()) == false) {
371+
throw new IllegalStateException("Forbidden APIs cli failed: " + forbiddenApisOutput);
372+
}
355373
return forbiddenApisOutput;
356374
}
357375

buildSrc/src/main/java/org/elasticsearch/gradle/test/RestTestRunnerTask.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.util.ArrayList;
99
import java.util.Collection;
1010

11-
import static org.elasticsearch.gradle.Distribution.INTEG_TEST;
11+
import static org.elasticsearch.gradle.testclusters.TestDistribution.INTEG_TEST;
1212

1313
/**
1414
* Customized version of Gradle {@link Test} task which tracks a collection of {@link ElasticsearchCluster} as a task input. We must do this
@@ -23,7 +23,7 @@ public class RestTestRunnerTask extends Test {
2323
public RestTestRunnerTask() {
2424
super();
2525
this.getOutputs().doNotCacheIf("Build cache is only enabled for tests against clusters using the 'integ-test' distribution",
26-
task -> clusters.stream().flatMap(c -> c.getNodes().stream()).anyMatch(n -> n.getDistribution() != INTEG_TEST));
26+
task -> clusters.stream().flatMap(c -> c.getNodes().stream()).anyMatch(n -> n.getTestDistribution() != INTEG_TEST));
2727
}
2828

2929
@Nested

0 commit comments

Comments
 (0)