Skip to content

Commit 7846ee8

Browse files
committed
Merge branch 'master' into security_authz_engine
2 parents b9a2c81 + a81931b commit 7846ee8

File tree

547 files changed

+8682
-9099
lines changed

Some content is hidden

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

547 files changed

+8682
-9099
lines changed

TESTING.asciidoc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,3 +631,13 @@ inside `/etc/hosts`, e.g.:
631631
255.255.255.255 broadcasthost
632632
::1 localhost ElasticMBP.local`
633633
....
634+
635+
== Benchmarking
636+
637+
For changes that might affect the performance characteristics of Elasticsearch
638+
you should also run macrobenchmarks. We maintain a macrobenchmarking tool
639+
called https://github.com/elastic/rally[Rally]
640+
which you can use to measure the performance impact. It comes with a set of
641+
default benchmarks that we also
642+
https://elasticsearch-benchmarks.elastic.co/[run every night]. To get started,
643+
please see https://esrally.readthedocs.io/en/stable/[Rally's documentation].

benchmarks/src/main/java/org/elasticsearch/benchmark/time/DateFormatterBenchmark.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,3 @@ public TemporalAccessor parseJodaDate() {
5555
return jodaFormatter.parse("1234567890");
5656
}
5757
}
58-

build.gradle

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ task verifyVersions {
159159
* the enabled state of every bwc task. It should be set back to true
160160
* after the backport of the backcompat code is complete.
161161
*/
162-
final boolean bwc_tests_enabled = true
163-
final String bwc_tests_disabled_issue = "" /* place a PR link here when committing bwc changes */
162+
final boolean bwc_tests_enabled = false
163+
final String bwc_tests_disabled_issue = "backporting https://github.com/elastic/elasticsearch/pull/37639" /* place a PR link here when committing bwc changes */
164164
if (bwc_tests_enabled == false) {
165165
if (bwc_tests_disabled_issue.isEmpty()) {
166166
throw new GradleException("bwc_tests_disabled_issue must be set when bwc_tests_enabled == false")
@@ -221,14 +221,6 @@ allprojects {
221221
"org.elasticsearch.plugin:elasticsearch-scripting-painless-spi:${version}": ':modules:lang-painless:spi',
222222
"org.elasticsearch.test:framework:${version}": ':test:framework',
223223
"org.elasticsearch.distribution.integ-test-zip:elasticsearch:${version}": ':distribution:archives:integ-test-zip',
224-
"downloads.zip:elasticsearch:${version}": ':distribution:archives:zip',
225-
"downloads.zip:elasticsearch-oss:${version}": ':distribution:archives:oss-zip',
226-
"downloads.tar:elasticsearch:${version}": ':distribution:archives:tar',
227-
"downloads.tar:elasticsearch-oss:${version}": ':distribution:archives:oss-tar',
228-
"downloads.rpm:elasticsearch:${version}": ':distribution:packages:rpm',
229-
"downloads.rpm:elasticsearch-oss:${version}": ':distribution:packages:oss-rpm',
230-
"downloads.deb:elasticsearch:${version}": ':distribution:packages:deb',
231-
"downloads.deb:elasticsearch-oss:${version}": ':distribution:packages:oss-deb',
232224
"org.elasticsearch.test:logger-usage:${version}": ':test:logger-usage',
233225
"org.elasticsearch.xpack.test:feature-aware:${version}": ':x-pack:test:feature-aware',
234226
// for transport client
@@ -240,19 +232,6 @@ allprojects {
240232
"org.elasticsearch.plugin:percolator-client:${version}": ':modules:percolator',
241233
"org.elasticsearch.plugin:rank-eval-client:${version}": ':modules:rank-eval',
242234
]
243-
// substitute unreleased versions with projects that check out and build locally
244-
bwcVersions.forPreviousUnreleased { VersionCollection.UnreleasedVersionInfo unreleasedVersion ->
245-
Version unreleased = unreleasedVersion.version
246-
String snapshotProject = ":distribution:bwc:${unreleasedVersion.gradleProjectName}"
247-
ext.projectSubstitutions["downloads.deb:elasticsearch:${unreleased}"] = snapshotProject
248-
ext.projectSubstitutions["downloads.rpm:elasticsearch:${unreleased}"] = snapshotProject
249-
ext.projectSubstitutions["downloads.zip:elasticsearch:${unreleased}"] = snapshotProject
250-
if (unreleased.onOrAfter('6.3.0')) {
251-
ext.projectSubstitutions["downloads.deb:elasticsearch-oss:${unreleased}"] = snapshotProject
252-
ext.projectSubstitutions["downloads.rpm:elasticsearch-oss:${unreleased}"] = snapshotProject
253-
ext.projectSubstitutions["downloads.zip:elasticsearch-oss:${unreleased}"] = snapshotProject
254-
}
255-
}
256235

257236
/*
258237
* Gradle only resolve project substitutions during dependency resolution but

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ class BuildPlugin implements Plugin<Project> {
392392
static void requireJavaHome(Task task, int version) {
393393
Project rootProject = task.project.rootProject // use root project for global accounting
394394
if (rootProject.hasProperty('requiredJavaVersions') == false) {
395-
rootProject.rootProject.ext.requiredJavaVersions = [:].withDefault{key -> return []}
395+
rootProject.rootProject.ext.requiredJavaVersions = [:]
396396
rootProject.gradle.taskGraph.whenReady { TaskExecutionGraph taskGraph ->
397397
List<String> messages = []
398398
for (entry in rootProject.requiredJavaVersions) {
@@ -415,7 +415,7 @@ class BuildPlugin implements Plugin<Project> {
415415
throw new GradleException("JAVA${version}_HOME required to run task:\n${task}")
416416
}
417417
} else {
418-
rootProject.requiredJavaVersions.get(version).add(task)
418+
rootProject.requiredJavaVersions.getOrDefault(version, []).add(task)
419419
}
420420
}
421421

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

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import org.apache.tools.ant.taskdefs.condition.Os
2323
import org.elasticsearch.gradle.BuildPlugin
2424
import org.elasticsearch.gradle.LoggedExec
2525
import org.elasticsearch.gradle.Version
26+
import org.elasticsearch.gradle.VersionCollection
2627
import org.elasticsearch.gradle.VersionProperties
2728
import org.elasticsearch.gradle.plugin.PluginBuildPlugin
2829
import org.elasticsearch.gradle.plugin.PluginPropertiesExtension
@@ -171,6 +172,12 @@ class ClusterFormationTasks {
171172

172173
/** Adds a dependency on the given distribution */
173174
static void configureDistributionDependency(Project project, String distro, Configuration configuration, String elasticsearchVersion) {
175+
if (distro.equals("integ-test-zip")) {
176+
// short circuit integ test so it doesn't complicate the rest of the distribution setup below
177+
project.dependencies.add(configuration.name,
178+
"org.elasticsearch.distribution.integ-test-zip:elasticsearch:${elasticsearchVersion}@zip")
179+
return
180+
}
174181
// TEMP HACK
175182
// The oss docs CI build overrides the distro on the command line. This hack handles backcompat until CI is updated.
176183
if (distro.equals('oss-zip')) {
@@ -180,22 +187,31 @@ class ClusterFormationTasks {
180187
distro = 'default'
181188
}
182189
// END TEMP HACK
183-
if (['integ-test-zip', 'oss', 'default'].contains(distro) == false) {
190+
if (['oss', 'default'].contains(distro) == false) {
184191
throw new GradleException("Unknown distribution: ${distro} in project ${project.path}")
185192
}
186193
Version version = Version.fromString(elasticsearchVersion)
187-
if (version.before('6.3.0') && distro.startsWith('oss-')) {
188-
distro = distro.substring('oss-'.length())
189-
}
190-
String group = "downloads.zip"
191-
if (distro.equals("integ-test-zip")) {
192-
group = "org.elasticsearch.distribution.integ-test-zip"
193-
}
194+
String group = "downloads.zip" // dummy group, does not matter except for integ-test-zip, it is ignored by the fake ivy repo
194195
String artifactName = 'elasticsearch'
195196
if (distro.equals('oss') && Version.fromString(elasticsearchVersion).onOrAfter('6.3.0')) {
196197
artifactName += '-oss'
197198
}
198-
project.dependencies.add(configuration.name, "${group}:${artifactName}:${elasticsearchVersion}@zip")
199+
String snapshotProject = distro == 'oss' ? 'oss-zip' : 'zip'
200+
Object dependency
201+
boolean internalBuild = project.hasProperty('bwcVersions')
202+
VersionCollection.UnreleasedVersionInfo unreleasedInfo = null
203+
if (project.hasProperty('bwcVersions')) {
204+
// NOTE: leniency is needed for external plugin authors using build-tools. maybe build the version compat info into build-tools?
205+
unreleasedInfo = project.bwcVersions.unreleasedInfo(version)
206+
}
207+
if (unreleasedInfo != null) {
208+
dependency = project.dependencies.project(path: ":distribution:bwc:${unreleasedInfo.gradleProjectName}", configuration: snapshotProject)
209+
} else if (internalBuild && elasticsearchVersion.equals(VersionProperties.elasticsearch)) {
210+
dependency = project.dependencies.project(path: ":distribution:archives:${snapshotProject}")
211+
} else {
212+
dependency = "${group}:${artifactName}:${elasticsearchVersion}@zip"
213+
}
214+
project.dependencies.add(configuration.name, dependency)
199215
}
200216

201217
/** Adds a dependency on a different version of the given plugin, which will be retrieved using gradle's dependency resolution */

buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantTestPlugin.groovy

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import org.apache.tools.ant.taskdefs.condition.Os
44
import org.elasticsearch.gradle.FileContentsTask
55
import org.elasticsearch.gradle.LoggedExec
66
import org.elasticsearch.gradle.Version
7+
import org.elasticsearch.gradle.VersionCollection
78
import org.gradle.api.*
89
import org.gradle.api.artifacts.dsl.RepositoryHandler
910
import org.gradle.api.execution.TaskExecutionAdapter
@@ -184,22 +185,38 @@ class VagrantTestPlugin implements Plugin<Project> {
184185
upgradeFromVersion = Version.fromString(upgradeFromVersionRaw)
185186
}
186187

188+
List<Object> dependencies = new ArrayList<>()
187189
DISTRIBUTIONS.each {
188190
// Adds a dependency for the current version
189-
project.dependencies.add(PACKAGING_CONFIGURATION,
190-
project.dependencies.project(path: ":distribution:${it}", configuration: 'default'))
191+
dependencies.add(project.dependencies.project(path: ":distribution:${it}", configuration: 'default'))
191192
}
192193

193-
UPGRADE_FROM_ARCHIVES.each {
194-
// The version of elasticsearch that we upgrade *from*
195-
project.dependencies.add(PACKAGING_CONFIGURATION,
196-
"downloads.${it}:elasticsearch:${upgradeFromVersion}@${it}")
197-
if (upgradeFromVersion.onOrAfter('6.3.0')) {
198-
project.dependencies.add(PACKAGING_CONFIGURATION,
199-
"downloads.${it}:elasticsearch-oss:${upgradeFromVersion}@${it}")
194+
// The version of elasticsearch that we upgrade *from*
195+
VersionCollection.UnreleasedVersionInfo unreleasedInfo = project.bwcVersions.unreleasedInfo(upgradeFromVersion)
196+
if (unreleasedInfo != null) {
197+
// handle snapshots pointing to bwc build
198+
UPGRADE_FROM_ARCHIVES.each {
199+
dependencies.add(project.dependencies.project(
200+
path: ":distribution:bwc:${unreleasedInfo.gradleProjectName}", configuration: it))
201+
if (upgradeFromVersion.onOrAfter('6.3.0')) {
202+
dependencies.add(project.dependencies.project(
203+
path: ":distribution:bwc:${unreleasedInfo.gradleProjectName}", configuration: "oss-${it}"))
204+
}
205+
}
206+
} else {
207+
UPGRADE_FROM_ARCHIVES.each {
208+
// The version of elasticsearch that we upgrade *from*
209+
dependencies.add("downloads.${it}:elasticsearch:${upgradeFromVersion}@${it}")
210+
if (upgradeFromVersion.onOrAfter('6.3.0')) {
211+
dependencies.add("downloads.${it}:elasticsearch-oss:${upgradeFromVersion}@${it}")
212+
}
200213
}
201214
}
202215

216+
for (Object dependency : dependencies) {
217+
project.dependencies.add(PACKAGING_CONFIGURATION, dependency)
218+
}
219+
203220
project.extensions.esvagrant.upgradeFromVersion = upgradeFromVersion
204221
}
205222

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
import java.util.ArrayList;
2222
import java.util.Collection;
23+
import java.util.Collections;
24+
import java.util.HashMap;
2325
import java.util.HashSet;
2426
import java.util.List;
2527
import java.util.Map;
@@ -86,6 +88,7 @@ public class VersionCollection {
8688

8789
private final Version currentVersion;
8890
private final Map<Integer, List<Version>> groupByMajor;
91+
private final Map<Version, UnreleasedVersionInfo> unreleased;
8992

9093
public class UnreleasedVersionInfo {
9194
public final Version version;
@@ -129,6 +132,16 @@ protected VersionCollection(List<String> versionLines, Version currentVersionPro
129132
assertCurrentVersionMatchesParsed(currentVersionProperty);
130133

131134
assertNoOlderThanTwoMajors();
135+
136+
Map<Version, UnreleasedVersionInfo> unreleased = new HashMap<>();
137+
for (Version unreleasedVersion : getUnreleased()) {
138+
if (unreleasedVersion.equals(currentVersion)) {
139+
continue;
140+
}
141+
unreleased.put(unreleasedVersion,
142+
new UnreleasedVersionInfo(unreleasedVersion, getBranchFor(unreleasedVersion), getGradleProjectNameFor(unreleasedVersion)));
143+
}
144+
this.unreleased = Collections.unmodifiableMap(unreleased);
132145
}
133146

134147
private void assertNoOlderThanTwoMajors() {
@@ -150,6 +163,13 @@ private void assertCurrentVersionMatchesParsed(Version currentVersionProperty) {
150163
}
151164
}
152165

166+
/**
167+
* Returns info about the unreleased version, or {@code null} if the version is released.
168+
*/
169+
public UnreleasedVersionInfo unreleasedInfo(Version version) {
170+
return unreleased.get(version);
171+
}
172+
153173
public void forPreviousUnreleased(Consumer<UnreleasedVersionInfo> consumer) {
154174
getUnreleased().stream()
155175
.filter(version -> version.equals(currentVersion) == false)

buildSrc/src/main/java/org/elasticsearch/gradle/testfixtures/TestFixturesPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public void apply(Project project) {
9696
if (dockerComposeSupported(project) == false) {
9797
project.getLogger().warn(
9898
"Tests for {} require docker-compose at /usr/local/bin/docker-compose or /usr/bin/docker-compose " +
99-
"but none could not be found so these will be skipped", project.getPath()
99+
"but none could be found so these will be skipped", project.getPath()
100100
);
101101
tasks.withType(getTaskClass("com.carrotsearch.gradle.junit4.RandomizedTestingTask"), task ->
102102
task.setEnabled(false)

buildSrc/src/test/java/org/elasticsearch/gradle/BuildExamplePluginsIT.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@
4040

4141
public class BuildExamplePluginsIT extends GradleIntegrationTestCase {
4242

43-
private static List<File> EXAMPLE_PLUGINS = Collections.unmodifiableList(
43+
private static final List<File> EXAMPLE_PLUGINS = Collections.unmodifiableList(
4444
Arrays.stream(
4545
Objects.requireNonNull(System.getProperty("test.build-tools.plugin.examples"))
4646
.split(File.pathSeparator)
4747
).map(File::new).collect(Collectors.toList())
4848
);
4949

50+
private static final String BUILD_TOOLS_VERSION = Objects.requireNonNull(System.getProperty("test.version_under_test"));
51+
5052
@Rule
5153
public TemporaryFolder tmpDir = new TemporaryFolder();
5254

@@ -96,7 +98,8 @@ public void testCurrentExamplePlugin() throws IOException {
9698

9799
private void adaptBuildScriptForTest() throws IOException {
98100
// Add the local repo as a build script URL so we can pull in build-tools and apply the plugin under test
99-
// + is ok because we have no other repo and just want to pick up latest
101+
// we need to specify the exact version of build-tools because gradle automatically adds its plugin portal
102+
// which appears to mirror jcenter, opening us up to pulling a "later" version of build-tools
100103
writeBuildScript(
101104
"buildscript {\n" +
102105
" repositories {\n" +
@@ -105,7 +108,7 @@ private void adaptBuildScriptForTest() throws IOException {
105108
" }\n" +
106109
" }\n" +
107110
" dependencies {\n" +
108-
" classpath \"org.elasticsearch.gradle:build-tools:+\"\n" +
111+
" classpath \"org.elasticsearch.gradle:build-tools:" + BUILD_TOOLS_VERSION + "\"\n" +
109112
" }\n" +
110113
"}\n"
111114
);

0 commit comments

Comments
 (0)