Skip to content

Commit bf8e17a

Browse files
Merge remote-tracking branch 'upstream/master' into long_sort_optimization
2 parents 6a0a284 + 40c951d commit bf8e17a

File tree

817 files changed

+32993
-11696
lines changed

Some content is hidden

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

817 files changed

+32993
-11696
lines changed

.ci/build.sh

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
#!/bin/bash
22

3+
JAVA_HOME=${JAVA_HOME:-$HOME/.java/openjdk12}
4+
RUNTIME_JAVA_HOME=${RUNTIME_JAVA_HOME:-$HOME/.java/openjdk11}
5+
6+
JAVA7_HOME=$HOME/.java/java7
7+
JAVA8_HOME=$HOME/.java/java8
8+
JAVA9_HOME=$HOME/.java/java9
9+
JAVA10_HOME=$HOME/.java/java10
10+
JAVA11_HOME=$HOME/.java/java11
11+
JAVA12_HOME=$HOME/.java/openjdk12
12+
JAVA13_HOME=$HOME/.java/openjdk13
13+
314
# drop page cache and kernel slab objects on linux
415
[[ -x /usr/local/sbin/drop-caches ]] && sudo /usr/local/sbin/drop-caches
516

@@ -10,9 +21,10 @@ if [ -f /proc/cpuinfo ] ; then
1021
MAX_WORKERS=`grep '^cpu\scores' /proc/cpuinfo | uniq | sed 's/\s\+//g' | cut -d':' -f 2`
1122
else
1223
if [[ "$OSTYPE" == "darwin"* ]]; then
13-
MAX_WORKERS=`sysctl -n hw.physicalcpu | sed 's/\s\+//g'`
14-
# Looks like it's too much for our workers so reduce it further
15-
MAX_WORKERS=$(($MAX_WORKERS/2))
24+
# Parallel is disabled at this time (eventually set to 1) due to errors on the Mac workers
25+
# We'll have to do more testing to see if this can be re-enabled or what the proper value is.
26+
# MAX_WORKERS=`sysctl -n hw.physicalcpu | sed 's/\s\+//g'`
27+
MAX_WORKERS=2
1628
else
1729
echo "Unsupported OS Type: $OSTYPE"
1830
exit 1
@@ -29,4 +41,4 @@ set -e
2941
./gradlew --parallel --scan \
3042
-Dorg.elasticsearch.build.cache.url=https://gradle-enterprise.elastic.co/cache/ \
3143
--parallel --max-workers=$MAX_WORKERS \
32-
"$@"
44+
"$@"

.ci/bwcVersions

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ BWC_VERSION:
1111
- "7.4.0"
1212
- "7.4.1"
1313
- "7.4.2"
14+
- "7.4.3"
1415
- "7.5.0"
1516
- "7.6.0"
1617
- "8.0.0"

.ci/jobs.t/defaults.yml

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,30 +35,17 @@
3535
fail: true
3636
- ansicolor
3737
- timestamps
38-
# TODO: No support un JJBB ?
39-
# - gradle-build-scan
38+
- gradle-build-scan
4039
properties:
4140
- github:
4241
url: https://github.com/elastic/elasticsearch/
4342
- inject:
4443
properties-content: |
4544
HOME=$JENKINS_HOME
4645
builders:
47-
- inject:
48-
properties-file: '.ci/java-versions.properties'
49-
properties-content: |
50-
JAVA_HOME=$HOME/.java/$ES_BUILD_JAVA
51-
RUNTIME_JAVA_HOME=$HOME/.java/$ES_RUNTIME_JAVA
52-
JAVA7_HOME=$HOME/.java/java7
53-
JAVA8_HOME=$HOME/.java/java8
54-
JAVA9_HOME=$HOME/.java/java9
55-
JAVA10_HOME=$HOME/.java/java10
56-
JAVA11_HOME=$HOME/.java/java11
57-
JAVA12_HOME=$HOME/.java/openjdk12
58-
JAVA13_HOME=$HOME/.java/openjdk13
5946
- shell: |
6047
#!/usr/local/bin/runbld --redirect-stderr --last-good-commit elastic+elasticsearch+%BRANCH%+git+push
61-
.ci/build.sh check
48+
.ci/build.sh -Dbwc.checkout.align=true check
6249
publishers:
6350
- email:
6451
recipients: infra-root+build@elastic.co

.ci/jobs.t/elastic+elasticsearch+{branch}+periodic-next.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,3 @@
55
description: "Periodic testing of the Elasticsearch %BRANCH% branch.\n"
66
triggers:
77
- timed: "H H/1 * * *"
8-
builders:
9-
- shell: |
10-
#!/usr/local/bin/runbld --redirect-stderr --last-good-commit elastic+elasticsearch+%BRANCH%+git+push
11-
.ci/build.sh -Dbwc.checkout.align=true check

CONTRIBUTING.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,9 @@ and `JAVA11_HOME` available so that the tests can pass.
107107
`jrunscript` for jdk distributions.
108108

109109
Elasticsearch uses the Gradle wrapper for its build. You can execute Gradle
110-
using the wrapper via the `gradlew` script in the root of the repository.
110+
using the wrapper via the `gradlew` script on Unix systems or `gradlew.bat`
111+
script on Windows in the root of the repository. The examples below show the
112+
usage on Unix.
111113

112114
We support development in the Eclipse and IntelliJ IDEs.
113115
For Eclipse, the minimum version that we support is [4.13][eclipse].

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ plugins {
4141
apply plugin: 'nebula.info-scm'
4242
apply from: 'gradle/build-scan.gradle'
4343
apply from: 'gradle/build-complete.gradle'
44+
apply from: 'gradle/runtime-jdk-provision.gradle'
4445

4546
// common maven publishing configuration
4647
allprojects {

buildSrc/build.gradle

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
* under the License.
1818
*/
1919

20+
import org.gradle.internal.jvm.Jvm
2021
import org.gradle.util.GradleVersion
2122

2223
plugins {
@@ -168,6 +169,9 @@ if (project != rootProject) {
168169
forbiddenApisTest.enabled = false
169170
jarHell.enabled = false
170171
thirdPartyAudit.enabled = false
172+
if (Boolean.parseBoolean(System.getProperty("tests.fips.enabled"))){
173+
test.enabled = false
174+
}
171175

172176
configurations {
173177
distribution
@@ -223,8 +227,13 @@ if (project != rootProject) {
223227
}
224228
check.dependsOn(integTest)
225229

230+
// for now we hardcode the tests for our build to use the gradle jvm.
231+
tasks.withType(Test).configureEach {
232+
it.executable = Jvm.current().getJavaExecutable()
233+
}
234+
226235
/*
227-
* We alread configure publication and we don't need or want this one that
236+
* We already configure publication and we don't need or want this one that
228237
* comes from the java-gradle-plugin.
229238
*/
230239
afterEvaluate {

buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import groovy.transform.CompileStatic
2626
import org.apache.commons.io.IOUtils
2727
import org.elasticsearch.gradle.info.BuildParams
2828
import org.elasticsearch.gradle.info.GlobalBuildInfoPlugin
29+
import org.elasticsearch.gradle.info.JavaHome
2930
import org.elasticsearch.gradle.precommit.DependencyLicensesTask
3031
import org.elasticsearch.gradle.precommit.PrecommitTasks
3132
import org.elasticsearch.gradle.test.ErrorReportingTestListener
@@ -233,41 +234,55 @@ class BuildPlugin implements Plugin<Project> {
233234
static void requireJavaHome(Task task, int version) {
234235
// use root project for global accounting
235236
Project rootProject = task.project.rootProject
236-
ExtraPropertiesExtension ext = rootProject.extensions.getByType(ExtraPropertiesExtension)
237+
ExtraPropertiesExtension extraProperties = rootProject.extensions.extraProperties
237238

238-
if (rootProject.hasProperty('requiredJavaVersions') == false) {
239-
ext.set('requiredJavaVersions', [:])
240-
rootProject.gradle.taskGraph.whenReady({ TaskExecutionGraph taskGraph ->
241-
List<String> messages = []
242-
Map<Integer, List<Task>> requiredJavaVersions = (Map<Integer, List<Task>>) ext.get('requiredJavaVersions')
243-
for (Map.Entry<Integer, List<Task>> entry : requiredJavaVersions) {
244-
if (BuildParams.javaVersions.find { it.version == entry.key } != null) {
245-
continue
246-
}
247-
List<String> tasks = entry.value.findAll { taskGraph.hasTask(it) }.collect { " ${it.path}".toString() }
248-
if (tasks.isEmpty() == false) {
249-
messages.add("JAVA${entry.key}_HOME required to run tasks:\n${tasks.join('\n')}".toString())
250-
}
251-
}
252-
if (messages.isEmpty() == false) {
253-
throw new GradleException(messages.join('\n'))
254-
}
255-
ext.set('requiredJavaVersions', null) // reset to null to indicate the pre-execution checks have executed
256-
})
257-
} else if (ext.has('requiredJavaVersions') == false || ext.get('requiredJavaVersions') == null) {
239+
// hacky way (but the only way) to find if the task graph has already been populated
240+
boolean taskGraphReady
241+
try {
242+
rootProject.gradle.taskGraph.getAllTasks()
243+
taskGraphReady = true
244+
} catch (IllegalStateException) {
245+
taskGraphReady = false
246+
}
247+
248+
if (taskGraphReady) {
258249
// check directly if the version is present since we are already executing
259250
if (BuildParams.javaVersions.find { it.version == version } == null) {
260251
throw new GradleException("JAVA${version}_HOME required to run task:\n${task}")
261252
}
262253
} else {
263-
(ext.get('requiredJavaVersions') as Map<Integer, List<Task>>).getOrDefault(version, []).add(task)
254+
// setup list of java versions we will check at the end of configuration time
255+
if (extraProperties.has('requiredJavaVersions') == false) {
256+
extraProperties.set('requiredJavaVersions', [:])
257+
rootProject.gradle.taskGraph.whenReady { TaskExecutionGraph taskGraph ->
258+
List<String> messages = []
259+
Map<Integer, List<Task>> requiredJavaVersions = (Map<Integer, List<Task>>) extraProperties.get('requiredJavaVersions')
260+
task.logger.warn(requiredJavaVersions.toString())
261+
for (Map.Entry<Integer, List<Task>> entry : requiredJavaVersions) {
262+
if (BuildParams.javaVersions.any { it.version == entry.key }) {
263+
continue
264+
}
265+
List<String> tasks = entry.value.findAll { taskGraph.hasTask(it) }.collect { " ${it.path}".toString() }
266+
if (tasks.isEmpty() == false) {
267+
messages.add("JAVA${entry.key}_HOME required to run tasks:\n${tasks.join('\n')}".toString())
268+
}
269+
}
270+
if (messages.isEmpty() == false) {
271+
throw new GradleException(messages.join('\n'))
272+
}
273+
}
274+
}
275+
Map<Integer, List<Task>> requiredJavaVersions = (Map<Integer, List<Task>>) extraProperties.get('requiredJavaVersions')
276+
requiredJavaVersions.putIfAbsent(version, [])
277+
requiredJavaVersions.get(version).add(task)
264278
}
265279
}
266280

267281
/** A convenience method for getting java home for a version of java and requiring that version for the given task to execute */
268282
static String getJavaHome(final Task task, final int version) {
269283
requireJavaHome(task, version)
270-
return BuildParams.javaVersions.find { it.version == version }.javaHome.absolutePath
284+
JavaHome java = BuildParams.javaVersions.find { it.version == version }
285+
return java == null ? null : java.javaHome.absolutePath
271286
}
272287

273288
/**
@@ -651,7 +666,6 @@ class BuildPlugin implements Plugin<Project> {
651666
test.jvmArgumentProviders.add(nonInputProperties)
652667
test.extensions.add('nonInputProperties', nonInputProperties)
653668

654-
test.executable = "${BuildParams.runtimeJavaHome}/bin/java"
655669
test.workingDir = project.file("${project.buildDir}/testrun/${test.name}")
656670
test.maxParallelForks = System.getProperty('tests.jvms', BuildParams.defaultParallel.toString()) as Integer
657671

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class Jdk implements Buildable, Iterable<File> {
3737
private static final List<String> ALLOWED_VENDORS = List.of("adoptopenjdk", "openjdk");
3838
static final Pattern VERSION_PATTERN =
3939
Pattern.compile("(\\d+)(\\.\\d+\\.\\d+)?\\+(\\d+(?:\\.\\d+)?)(@([a-f0-9]{32}))?");
40-
private static final List<String> ALLOWED_PLATFORMS = Collections.unmodifiableList(Arrays.asList("darwin", "linux", "windows"));
40+
private static final List<String> ALLOWED_PLATFORMS = Collections.unmodifiableList(Arrays.asList("darwin", "linux", "windows", "mac"));
4141

4242
private final String name;
4343
private final Configuration configuration;
@@ -111,6 +111,17 @@ public TaskDependency getBuildDependencies() {
111111
return configuration.getBuildDependencies();
112112
}
113113

114+
public Object getBinJavaPath() {
115+
return new Object() {
116+
@Override
117+
public String toString() {
118+
final String platform = getPlatform();
119+
final boolean isOSX = "mac".equals(platform) || "darwin".equals(platform);
120+
return getPath() + (isOSX ? "/Contents/Home" : "") + "/bin/java";
121+
}
122+
};
123+
}
124+
114125
// internal, make this jdks configuration unmodifiable
115126
void finalizeValues() {
116127
if (version.isPresent() == false) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ private static void setupRootJdkDownload(Project rootProject, String platform, S
173173
jdkConfig = configurations.create(remoteConfigName);
174174
configurations.create(localConfigName);
175175
}
176-
String platformDep = platform.equals("darwin") ? (vendor.equals("adoptopenjdk") ? "mac" : "osx") : platform;
176+
String platformDep = platform.equals("darwin") || platform.equals("osx") ?
177+
(vendor.equals("adoptopenjdk") ? "mac" : "osx") : platform;
177178
String extension = platform.equals("windows") ? "zip" : "tar.gz";
178179
String jdkDep = vendor + ":" + platformDep + ":" + jdkVersion + "@" + extension;
179180
rootProject.getDependencies().add(configName(vendor, version, platform), jdkDep);

0 commit comments

Comments
 (0)