Skip to content

Commit b512e55

Browse files
committed
Merge remote-tracking branch 'elastic/master' into geosql
2 parents 61e92f1 + dda56fc commit b512e55

File tree

711 files changed

+1599
-1634
lines changed

Some content is hidden

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

711 files changed

+1599
-1634
lines changed

Vagrantfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ Vagrant.configure(2) do |config|
3131
# Give the box more memory and cpu because our tests are beasts!
3232
vbox.memory = Integer(ENV['VAGRANT_MEMORY'] || 8192)
3333
vbox.cpus = Integer(ENV['VAGRANT_CPUS'] || 4)
34+
35+
# see https://github.com/hashicorp/vagrant/issues/9524
36+
vbox.customize ["modifyvm", :id, "--audio", "none"]
3437
end
3538

3639
# Switch the default share for the project root from /vagrant to

build.gradle

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ subprojects { project ->
543543
}
544544
}
545545

546-
/* Remove assemble on all qa projects because we don't need to publish
546+
/* Remove assemble/dependenciesInfo on all qa projects because we don't need to publish
547547
* artifacts for them. */
548548
gradle.projectsEvaluated {
549549
subprojects {
@@ -553,6 +553,11 @@ gradle.projectsEvaluated {
553553
project.tasks.remove(assemble)
554554
project.build.dependsOn.remove('assemble')
555555
}
556+
Task dependenciesInfo = project.tasks.findByName('dependenciesInfo')
557+
if (dependenciesInfo) {
558+
project.tasks.remove(dependenciesInfo)
559+
project.precommit.dependsOn.remove('dependenciesInfo')
560+
}
556561
}
557562
}
558563
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,10 @@ class BuildPlugin implements Plugin<Project> {
762762

763763
private static configureDependenciesInfo(Project project) {
764764
Task deps = project.tasks.create("dependenciesInfo", DependenciesInfoTask.class)
765-
deps.dependencies = project.configurations.compile.allDependencies
765+
deps.runtimeConfiguration = project.configurations.runtime
766+
deps.compileOnlyConfiguration = project.configurations.compileOnly
767+
project.afterEvaluate {
768+
deps.mappings = project.dependencyLicenses.mappings
769+
}
766770
}
767771
}

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

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,19 @@
1919

2020
package org.elasticsearch.gradle
2121

22+
import org.elasticsearch.gradle.precommit.DependencyLicensesTask
2223
import org.gradle.api.DefaultTask
24+
import org.gradle.api.artifacts.Configuration
2325
import org.gradle.api.artifacts.Dependency
26+
import org.gradle.api.artifacts.DependencyResolutionListener
2427
import org.gradle.api.artifacts.DependencySet
2528
import org.gradle.api.tasks.Input
2629
import org.gradle.api.tasks.InputDirectory
2730
import org.gradle.api.tasks.OutputFile
2831
import org.gradle.api.tasks.TaskAction
2932

33+
import java.util.regex.Matcher
34+
import java.util.regex.Pattern
3035

3136
/**
3237
* A task to gather information about the dependencies and export them into a csv file.
@@ -44,7 +49,14 @@ public class DependenciesInfoTask extends DefaultTask {
4449

4550
/** Dependencies to gather information from. */
4651
@Input
47-
public DependencySet dependencies
52+
public Configuration runtimeConfiguration
53+
54+
/** We subtract compile-only dependencies. */
55+
@Input
56+
public Configuration compileOnlyConfiguration
57+
58+
@Input
59+
public LinkedHashMap<String, String> mappings
4860

4961
/** Directory to read license files */
5062
@InputDirectory
@@ -59,15 +71,34 @@ public class DependenciesInfoTask extends DefaultTask {
5971

6072
@TaskAction
6173
public void generateDependenciesInfo() {
74+
75+
final DependencySet runtimeDependencies = runtimeConfiguration.getAllDependencies()
76+
// we have to resolve the transitive dependencies and create a group:artifactId:version map
77+
final Set<String> compileOnlyArtifacts =
78+
compileOnlyConfiguration
79+
.getResolvedConfiguration()
80+
.resolvedArtifacts
81+
.collect { it -> "${it.moduleVersion.id.group}:${it.moduleVersion.id.name}:${it.moduleVersion.id.version}" }
82+
6283
final StringBuilder output = new StringBuilder()
6384

64-
for (Dependency dependency : dependencies) {
65-
// Only external dependencies are checked
66-
if (dependency.group != null && dependency.group.contains("elasticsearch") == false) {
67-
final String url = createURL(dependency.group, dependency.name, dependency.version)
68-
final String licenseType = getLicenseType(dependency.group, dependency.name)
69-
output.append("${dependency.group}:${dependency.name},${dependency.version},${url},${licenseType}\n")
85+
for (final Dependency dependency : runtimeDependencies) {
86+
// we do not need compile-only dependencies here
87+
if (compileOnlyArtifacts.contains("${dependency.group}:${dependency.name}:${dependency.version}")) {
88+
continue
7089
}
90+
// only external dependencies are checked
91+
if (dependency.group != null && dependency.group.contains("org.elasticsearch")) {
92+
continue
93+
}
94+
95+
final String url = createURL(dependency.group, dependency.name, dependency.version)
96+
final String dependencyName = DependencyLicensesTask.getDependencyName(mappings, dependency.name)
97+
logger.info("mapped dependency ${dependency.group}:${dependency.name} to ${dependencyName} for license info")
98+
99+
final String licenseType = getLicenseType(dependency.group, dependencyName)
100+
output.append("${dependency.group}:${dependency.name},${dependency.version},${url},${licenseType}\n")
101+
71102
}
72103
outputFile.setText(output.toString(), 'UTF-8')
73104
}
@@ -173,7 +204,7 @@ are met:
173204
derived from this software without specific prior written permission\\.|
174205
(3\\.)? Neither the name of .+ nor the names of its
175206
contributors may be used to endorse or promote products derived from
176-
this software without specific prior written permission\\.)
207+
this software without specific prior written permission\\.)
177208
178209
THIS SOFTWARE IS PROVIDED BY .+ (``|''|")AS IS(''|") AND ANY EXPRESS OR
179210
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
@@ -214,6 +245,8 @@ SOFTWARE\\.
214245

215246
final String MOZILLA_1_1 = "Mozilla Public License.*Version 1.1"
216247

248+
final String MOZILLA_2_0 = "Mozilla\\s*Public\\s*License\\s*Version\\s*2\\.0"
249+
217250
switch (licenseText) {
218251
case ~/.*${APACHE_2_0}.*/:
219252
spdx = 'Apache-2.0'
@@ -242,6 +275,9 @@ SOFTWARE\\.
242275
case ~/.*${MOZILLA_1_1}.*/:
243276
spdx = 'MPL-1.1'
244277
break
278+
case ~/.*${MOZILLA_2_0}.*/:
279+
spdx = 'MPL-2.0'
280+
break
245281
default:
246282
break
247283
}

buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/DependencyLicensesTask.groovy

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ public class DependencyLicensesTask extends DefaultTask {
109109
mappings.put(from, to)
110110
}
111111

112+
public LinkedHashMap<String, String> getMappings() {
113+
return new LinkedHashMap<>(mappings)
114+
}
115+
112116
/**
113117
* Add a rule which will skip SHA checking for the given dependency name. This should be used for
114118
* locally build dependencies, which cause the sha to change constantly.
@@ -129,10 +133,6 @@ public class DependencyLicensesTask extends DefaultTask {
129133
throw new GradleException("Licences dir ${licensesDir} does not exist, but there are dependencies")
130134
}
131135

132-
133-
// order is the same for keys and values iteration since we use a linked hashmap
134-
List<String> mapped = new ArrayList<>(mappings.values())
135-
Pattern mappingsPattern = Pattern.compile('(' + mappings.keySet().join(')|(') + ')')
136136
Map<String, Integer> licenses = new HashMap<>()
137137
Map<String, Integer> notices = new HashMap<>()
138138
Set<File> shaFiles = new HashSet<File>()
@@ -151,7 +151,7 @@ public class DependencyLicensesTask extends DefaultTask {
151151

152152
for (File dependency : dependencies) {
153153
String jarName = dependency.getName()
154-
String depName = jarName - ~/\-\d+.*/
154+
String depName = jarName - ~/\-v?\d+.*/
155155
if (ignoreShas.contains(depName)) {
156156
// local deps should not have sha files!
157157
if (getShaFile(jarName).exists()) {
@@ -162,16 +162,10 @@ public class DependencyLicensesTask extends DefaultTask {
162162
checkSha(dependency, jarName, shaFiles)
163163
}
164164

165-
logger.info("Checking license/notice for " + depName)
166-
Matcher match = mappingsPattern.matcher(depName)
167-
if (match.matches()) {
168-
int i = 0
169-
while (i < match.groupCount() && match.group(i + 1) == null) ++i;
170-
logger.info("Mapped dependency name ${depName} to ${mapped.get(i)} for license check")
171-
depName = mapped.get(i)
172-
}
173-
checkFile(depName, jarName, licenses, 'LICENSE')
174-
checkFile(depName, jarName, notices, 'NOTICE')
165+
final String dependencyName = getDependencyName(mappings, depName)
166+
logger.info("mapped dependency name ${depName} to ${dependencyName} for license/notice check")
167+
checkFile(dependencyName, jarName, licenses, 'LICENSE')
168+
checkFile(dependencyName, jarName, notices, 'NOTICE')
175169
}
176170

177171
licenses.each { license, count ->
@@ -189,6 +183,19 @@ public class DependencyLicensesTask extends DefaultTask {
189183
}
190184
}
191185

186+
public static String getDependencyName(final LinkedHashMap<String, String> mappings, final String dependencyName) {
187+
// order is the same for keys and values iteration since we use a linked hashmap
188+
List<String> mapped = new ArrayList<>(mappings.values())
189+
Pattern mappingsPattern = Pattern.compile('(' + mappings.keySet().join(')|(') + ')')
190+
Matcher match = mappingsPattern.matcher(dependencyName)
191+
if (match.matches()) {
192+
int i = 0
193+
while (i < match.groupCount() && match.group(i + 1) == null) ++i;
194+
return mapped.get(i)
195+
}
196+
return dependencyName
197+
}
198+
192199
private File getShaFile(String jarName) {
193200
return new File(licensesDir, jarName + SHA_EXTENSION)
194201
}

buildSrc/src/main/resources/checkstyle_suppressions.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,6 @@
580580
<suppress files="server[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]query[/\\]SpanMultiTermQueryBuilderTests.java" checks="LineLength" />
581581
<suppress files="server[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]query[/\\]SpanNotQueryBuilderTests.java" checks="LineLength" />
582582
<suppress files="server[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]query[/\\]functionscore[/\\]FunctionScoreTests.java" checks="LineLength" />
583-
<suppress files="server[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]replication[/\\]ESIndexLevelReplicationTestCase.java" checks="LineLength" />
584583
<suppress files="server[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]search[/\\]geo[/\\]GeoUtilsTests.java" checks="LineLength" />
585584
<suppress files="server[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]search[/\\]nested[/\\]AbstractNumberNestedSortingTestCase.java" checks="LineLength" />
586585
<suppress files="server[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]search[/\\]nested[/\\]DoubleNestedSortingTests.java" checks="LineLength" />

client/benchmark/src/main/java/org/elasticsearch/client/benchmark/AbstractBenchmark.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
import java.lang.management.GarbageCollectorMXBean;
2929
import java.lang.management.ManagementFactory;
3030
import java.util.Arrays;
31-
import java.util.Collection;
32-
import java.util.Collections;
3331
import java.util.List;
3432
import java.util.stream.Collectors;
3533

client/client-benchmark-noop-api-plugin/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ esplugin {
3131
tasks.remove(assemble)
3232
build.dependsOn.remove('assemble')
3333

34+
dependencyLicenses.enabled = false
35+
dependenciesInfo.enabled = false
36+
3437
compileJava.options.compilerArgs << "-Xlint:-cast,-deprecation,-rawtypes,-try,-unchecked"
3538

3639
// no unit tests

client/rest-high-level/src/main/java/org/elasticsearch/client/IndicesClient.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse;
5555
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
5656
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
57+
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
58+
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
5759
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
5860
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateResponse;
5961

@@ -1059,4 +1061,33 @@ public void putTemplateAsync(PutIndexTemplateRequest putIndexTemplateRequest, Re
10591061
restHighLevelClient.performRequestAsyncAndParseEntity(putIndexTemplateRequest, RequestConverters::putTemplate, options,
10601062
PutIndexTemplateResponse::fromXContent, listener, emptySet());
10611063
}
1064+
1065+
/**
1066+
* Gets index templates using the Index Templates API
1067+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html"> Index Templates API
1068+
* on elastic.co</a>
1069+
* @param getIndexTemplatesRequest the request
1070+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
1071+
* @return the response
1072+
* @throws IOException in case there is a problem sending the request or parsing back the response
1073+
*/
1074+
public GetIndexTemplatesResponse getTemplate(GetIndexTemplatesRequest getIndexTemplatesRequest,
1075+
RequestOptions options) throws IOException {
1076+
return restHighLevelClient.performRequestAndParseEntity(getIndexTemplatesRequest, RequestConverters::getTemplates,
1077+
options, GetIndexTemplatesResponse::fromXContent, emptySet());
1078+
}
1079+
1080+
/**
1081+
* Asynchronously gets index templates using the Index Templates API
1082+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html"> Index Templates API
1083+
* on elastic.co</a>
1084+
* @param getIndexTemplatesRequest the request
1085+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
1086+
* @param listener the listener to be notified upon request completion
1087+
*/
1088+
public void getTemplateAsync(GetIndexTemplatesRequest getIndexTemplatesRequest, RequestOptions options,
1089+
ActionListener<GetIndexTemplatesResponse> listener) {
1090+
restHighLevelClient.performRequestAsyncAndParseEntity(getIndexTemplatesRequest, RequestConverters::getTemplates,
1091+
options, GetIndexTemplatesResponse::fromXContent, listener, emptySet());
1092+
}
10621093
}

client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
5656
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
5757
import org.elasticsearch.action.admin.indices.shrink.ResizeType;
58+
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
5859
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
5960
import org.elasticsearch.action.bulk.BulkRequest;
6061
import org.elasticsearch.action.delete.DeleteRequest;
@@ -830,6 +831,16 @@ static Request putTemplate(PutIndexTemplateRequest putIndexTemplateRequest) thro
830831
return request;
831832
}
832833

834+
static Request getTemplates(GetIndexTemplatesRequest getIndexTemplatesRequest) throws IOException {
835+
String[] names = getIndexTemplatesRequest.names();
836+
String endpoint = new EndpointBuilder().addPathPartAsIs("_template").addCommaSeparatedPathParts(names).build();
837+
Request request = new Request(HttpGet.METHOD_NAME, endpoint);
838+
Params params = new Params(request);
839+
params.withLocal(getIndexTemplatesRequest.local());
840+
params.withMasterTimeout(getIndexTemplatesRequest.masterNodeTimeout());
841+
return request;
842+
}
843+
833844
private static HttpEntity createEntity(ToXContent toXContent, XContentType xContentType) throws IOException {
834845
BytesRef source = XContentHelper.toXContent(toXContent, xContentType, false).toBytesRef();
835846
return new ByteArrayEntity(source.bytes, source.offset, source.length, createContentType(xContentType));

0 commit comments

Comments
 (0)