Skip to content

Commit ba0b707

Browse files
committed
Merge remote-tracking branch 'es/master' into ccr
* es/master: (24 commits) Reduce synchronization on field data cache add json-processor support for non-map json types (#27335) Properly format IndexGraveyard deletion date as date (#27362) Upgrade AWS SDK Jackson Databind to 2.6.7.1 Stop responding to ping requests before master abdication (#27329) [Test] Fix POI version in packaging tests Allow affix settings to specify dependencies (#27161) Tests: Improve size regex in documentation test (#26879) reword comment Remove unnecessary logger creation for doc values field data [Geo] Decouple geojson parse logic from ShapeBuilders [DOCS] Fixed link to docker content Plugins: Add versionless alias to all security policy codebase properties (#26756) [Test] #27342 Fix SearchRequests#testValidate [DOCS] Move X-Pack-specific Docker content (#27333) Fail queries with scroll that explicitely set request_cache (#27342) [Test] Fix S3BlobStoreContainerTests.testNumberOfMultiparts() Set minimum_master_nodes to all nodes for REST tests (#27344) [Tests] Relax allowed delta in extended_stats aggregation (#27171) Remove S3 output stream (#27280) ...
2 parents 2032881 + 2e86357 commit ba0b707

File tree

111 files changed

+3472
-2733
lines changed

Some content is hidden

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

111 files changed

+3472
-2733
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ class ClusterConfiguration {
6464

6565
/**
6666
* Configuration of the setting <tt>discovery.zen.minimum_master_nodes</tt> on the nodes.
67-
* In case of more than one node, this defaults to (number of nodes / 2) + 1
67+
* In case of more than one node, this defaults to the number of nodes
6868
*/
6969
@Input
70-
Closure<Integer> minimumMasterNodes = { getNumNodes() > 1 ? getNumNodes().intdiv(2) + 1 : -1 }
70+
Closure<Integer> minimumMasterNodes = { getNumNodes() > 1 ? getNumNodes() : -1 }
7171

7272
@Input
7373
String jvmArgs = "-Xms" + System.getProperty('tests.heap.size', '512m') +

client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/QueryDSLDocumentationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.elasticsearch.common.geo.GeoPoint;
2424
import org.elasticsearch.common.geo.ShapeRelation;
2525
import org.elasticsearch.common.geo.builders.CoordinatesBuilder;
26-
import org.elasticsearch.common.geo.builders.ShapeBuilders;
26+
import org.elasticsearch.common.geo.builders.MultiPointBuilder;
2727
import org.elasticsearch.common.unit.DistanceUnit;
2828
import org.elasticsearch.index.query.GeoShapeQueryBuilder;
2929
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
@@ -189,7 +189,7 @@ public void testGeoShape() throws IOException {
189189
// tag::geo_shape
190190
GeoShapeQueryBuilder qb = geoShapeQuery(
191191
"pin.location", // <1>
192-
ShapeBuilders.newMultiPoint( // <2>
192+
new MultiPointBuilder( // <2>
193193
new CoordinatesBuilder()
194194
.coordinate(0, 0)
195195
.coordinate(0, 10)

core/src/main/java/org/elasticsearch/action/admin/cluster/settings/SettingsUpdater.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,23 @@ synchronized ClusterState updateSettings(final ClusterState currentState, Settin
5454
transientSettings.put(currentState.metaData().transientSettings());
5555
changed |= clusterSettings.updateDynamicSettings(transientToApply, transientSettings, transientUpdates, "transient");
5656

57+
5758
Settings.Builder persistentSettings = Settings.builder();
5859
persistentSettings.put(currentState.metaData().persistentSettings());
5960
changed |= clusterSettings.updateDynamicSettings(persistentToApply, persistentSettings, persistentUpdates, "persistent");
6061

6162
final ClusterState clusterState;
6263
if (changed) {
64+
Settings transientFinalSettings = transientSettings.build();
65+
Settings persistentFinalSettings = persistentSettings.build();
66+
// both transient and persistent settings must be consistent by itself we can't allow dependencies to be
67+
// in either of them otherwise a full cluster restart will break the settings validation
68+
clusterSettings.validate(transientFinalSettings, true);
69+
clusterSettings.validate(persistentFinalSettings, true);
70+
6371
MetaData.Builder metaData = MetaData.builder(currentState.metaData())
64-
.persistentSettings(persistentSettings.build())
65-
.transientSettings(transientSettings.build());
72+
.persistentSettings(persistentFinalSettings)
73+
.transientSettings(transientFinalSettings);
6674

6775
ClusterBlocks.Builder blocks = ClusterBlocks.builder().blocks(currentState.blocks());
6876
boolean updatedReadOnly = MetaData.SETTING_READ_ONLY_SETTING.get(metaData.persistentSettings())

core/src/main/java/org/elasticsearch/action/admin/indices/template/put/TransportPutIndexTemplateAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ protected void masterOperation(final PutIndexTemplateRequest request, final Clus
7777
}
7878
final Settings.Builder templateSettingsBuilder = Settings.builder();
7979
templateSettingsBuilder.put(request.settings()).normalizePrefix(IndexMetaData.INDEX_SETTING_PREFIX);
80-
indexScopedSettings.validate(templateSettingsBuilder);
80+
indexScopedSettings.validate(templateSettingsBuilder.build(), true); // templates must be consistent with regards to dependencies
8181
indexTemplateService.putTemplate(new MetaDataIndexTemplateService.PutRequest(cause, request.name())
8282
.patterns(request.patterns())
8383
.order(request.order())

core/src/main/java/org/elasticsearch/action/search/SearchRequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ public ActionRequestValidationException validate() {
169169
validationException =
170170
addValidationError("using [from] is not allowed in a scroll context", validationException);
171171
}
172+
if (requestCache != null && requestCache && scroll() != null) {
173+
validationException =
174+
addValidationError("[request_cache] cannot be used in a a scroll context", validationException);
175+
}
172176
return validationException;
173177
}
174178

core/src/main/java/org/elasticsearch/bootstrap/Security.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -199,28 +199,28 @@ static Policy readPolicy(URL policyFile, Set<URL> codebases) {
199199
try {
200200
// set codebase properties
201201
for (URL url : codebases) {
202-
String shortName = PathUtils.get(url.toURI()).getFileName().toString();
203-
if (shortName.endsWith(".jar") == false) {
202+
String fileName = PathUtils.get(url.toURI()).getFileName().toString();
203+
if (fileName.endsWith(".jar") == false) {
204204
continue; // tests :(
205205
}
206-
String property = "codebase." + shortName;
207-
if (shortName.startsWith("elasticsearch-rest-client")) {
208-
// The rest client is currently the only example where we have an elasticsearch built artifact
209-
// which needs special permissions in policy files when used. This temporary solution is to
210-
// pass in an extra system property that omits the -version.jar suffix the other properties have.
211-
// That allows the snapshots to reference snapshot builds of the client, and release builds to
212-
// referenced release builds of the client, all with the same grant statements.
213-
final String esVersion = Version.CURRENT + (Build.CURRENT.isSnapshot() ? "-SNAPSHOT" : "");
214-
final int index = property.indexOf("-" + esVersion + ".jar");
215-
assert index >= 0;
216-
String restClientAlias = property.substring(0, index);
217-
propertiesSet.add(restClientAlias);
218-
System.setProperty(restClientAlias, url.toString());
206+
// We attempt to use a versionless identifier for each codebase. This assumes a specific version
207+
// format in the jar filename. While we cannot ensure all jars in all plugins use this format, nonconformity
208+
// only means policy grants would need to include the entire jar filename as they always have before.
209+
String property = "codebase." + fileName;
210+
String aliasProperty = "codebase." + fileName.replaceFirst("-\\d+\\.\\d+.*\\.jar", "");
211+
if (aliasProperty.equals(property) == false) {
212+
propertiesSet.add(aliasProperty);
213+
String previous = System.setProperty(aliasProperty, url.toString());
214+
if (previous != null) {
215+
throw new IllegalStateException("codebase property already set: " + aliasProperty + " -> " + previous +
216+
", cannot set to " + url.toString());
217+
}
219218
}
220219
propertiesSet.add(property);
221220
String previous = System.setProperty(property, url.toString());
222221
if (previous != null) {
223-
throw new IllegalStateException("codebase property already set: " + shortName + "->" + previous);
222+
throw new IllegalStateException("codebase property already set: " + property + " -> " + previous +
223+
", cannot set to " + url.toString());
224224
}
225225
}
226226
return Policy.getInstance("JavaPolicy", new URIParameter(policyFile.toURI()));

core/src/main/java/org/elasticsearch/cluster/metadata/IndexGraveyard.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import org.elasticsearch.common.xcontent.XContentBuilder;
3535
import org.elasticsearch.common.xcontent.XContentParser;
3636
import org.elasticsearch.index.Index;
37+
import org.joda.time.DateTime;
38+
import org.joda.time.DateTimeZone;
3739

3840
import java.io.IOException;
3941
import java.util.ArrayList;
@@ -432,7 +434,7 @@ public XContentBuilder toXContent(final XContentBuilder builder, final Params pa
432434
builder.startObject();
433435
builder.field(INDEX_KEY);
434436
index.toXContent(builder, params);
435-
builder.timeValueField(DELETE_DATE_IN_MILLIS_KEY, DELETE_DATE_KEY, deleteDateInMillis, TimeUnit.MILLISECONDS);
437+
builder.dateField(DELETE_DATE_IN_MILLIS_KEY, DELETE_DATE_KEY, deleteDateInMillis);
436438
return builder.endObject();
437439
}
438440

core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,9 @@ public void createIndex(final CreateIndexClusterStateUpdateRequest request,
220220
private void onlyCreateIndex(final CreateIndexClusterStateUpdateRequest request,
221221
final ActionListener<ClusterStateUpdateResponse> listener) {
222222
Settings.Builder updatedSettingsBuilder = Settings.builder();
223-
updatedSettingsBuilder.put(request.settings()).normalizePrefix(IndexMetaData.INDEX_SETTING_PREFIX);
224-
indexScopedSettings.validate(updatedSettingsBuilder);
225-
request.settings(updatedSettingsBuilder.build());
226-
223+
Settings build = updatedSettingsBuilder.put(request.settings()).normalizePrefix(IndexMetaData.INDEX_SETTING_PREFIX).build();
224+
indexScopedSettings.validate(build, true); // we do validate here - index setting must be consistent
225+
request.settings(build);
227226
clusterService.submitStateUpdateTask("create-index [" + request.index() + "], cause [" + request.cause() + "]",
228227
new IndexCreationTask(logger, allocationService, request, listener, indicesService, aliasValidator, xContentRegistry, settings,
229228
this::validate));
@@ -420,7 +419,6 @@ public ClusterState execute(ClusterState currentState) throws Exception {
420419
tmpImdBuilder.primaryTerm(shardId, primaryTerm);
421420
}
422421
}
423-
424422
// Set up everything, now locally create the index to see that things are ok, and apply
425423
final IndexMetaData tmpImd = tmpImdBuilder.build();
426424
ActiveShardCount waitForActiveShards = request.waitForActiveShards();

core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexTemplateService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ private void validate(PutRequest request) {
276276
}
277277

278278
try {
279-
indexScopedSettings.validate(request.settings);
279+
indexScopedSettings.validate(request.settings, true); // templates must be consistent with regards to dependencies
280280
} catch (IllegalArgumentException iae) {
281281
validationErrors.add(iae.getMessage());
282282
for (Throwable t : iae.getSuppressed()) {

core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataUpdateSettingsService.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.util.Locale;
5555
import java.util.Map;
5656
import java.util.Set;
57+
import java.util.function.Predicate;
5758

5859
import static org.elasticsearch.action.support.ContextPreservingActionListener.wrapPreservingContext;
5960

@@ -163,7 +164,7 @@ public void updateSettings(final UpdateSettingsClusterStateUpdateRequest request
163164
Settings.Builder settingsForOpenIndices = Settings.builder();
164165
final Set<String> skippedSettings = new HashSet<>();
165166

166-
indexScopedSettings.validate(normalizedSettings);
167+
indexScopedSettings.validate(normalizedSettings, false); // don't validate dependencies here we check it below
167168
// never allow to change the number of shards
168169
for (String key : normalizedSettings.keySet()) {
169170
Setting setting = indexScopedSettings.get(key);
@@ -240,7 +241,9 @@ public ClusterState execute(ClusterState currentState) {
240241
if (preserveExisting) {
241242
indexSettings.put(indexMetaData.getSettings());
242243
}
243-
metaDataBuilder.put(IndexMetaData.builder(indexMetaData).settings(indexSettings));
244+
Settings finalSettings = indexSettings.build();
245+
indexScopedSettings.validate(finalSettings.filter(k -> indexScopedSettings.isPrivateSetting(k) == false), true);
246+
metaDataBuilder.put(IndexMetaData.builder(indexMetaData).settings(finalSettings));
244247
}
245248
}
246249
}
@@ -254,7 +257,9 @@ public ClusterState execute(ClusterState currentState) {
254257
if (preserveExisting) {
255258
indexSettings.put(indexMetaData.getSettings());
256259
}
257-
metaDataBuilder.put(IndexMetaData.builder(indexMetaData).settings(indexSettings));
260+
Settings finalSettings = indexSettings.build();
261+
indexScopedSettings.validate(finalSettings.filter(k -> indexScopedSettings.isPrivateSetting(k) == false), true);
262+
metaDataBuilder.put(IndexMetaData.builder(indexMetaData).settings(finalSettings));
258263
}
259264
}
260265
}

0 commit comments

Comments
 (0)