Skip to content

Commit c725720

Browse files
authored
Merge branch '9.2' into backport/9.2/pr-138097
2 parents 68c3a1e + 6faa636 commit c725720

File tree

47 files changed

+873
-173
lines changed

Some content is hidden

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

47 files changed

+873
-173
lines changed

docs/changelog/137652.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 137652
2+
summary: Fix default value for some settings when filtered
3+
area: Infra/Settings
4+
type: bug
5+
issues:
6+
- 136333

docs/changelog/138122.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 138122
2+
summary: Add validation for updating `num_threads`
3+
area: Machine Learning
4+
type: bug
5+
issues:
6+
- 137129

docs/changelog/138132.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 138132
2+
summary: Fix integer overflow in block memory estimation
3+
area: ES|QL
4+
type: bug
5+
issues: []

muted-tests.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -555,9 +555,6 @@ tests:
555555
- class: org.elasticsearch.xpack.inference.InferenceRestIT
556556
method: test {p0=inference/70_text_similarity_rank_retriever/Text similarity reranker with min_score zero includes all docs}
557557
issue: https://github.com/elastic/elasticsearch/issues/137732
558-
- class: org.elasticsearch.xpack.shutdown.NodeShutdownIT
559-
method: testStalledShardMigrationProperlyDetected
560-
issue: https://github.com/elastic/elasticsearch/issues/115697
561558

562559
# Examples:
563560
#
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.action.admin.indices.settings.get;
11+
12+
import org.elasticsearch.common.settings.Settings;
13+
import org.elasticsearch.test.ESIntegTestCase;
14+
import org.elasticsearch.test.LambdaMatchers;
15+
16+
import java.util.Map;
17+
18+
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
19+
import static org.hamcrest.Matchers.equalTo;
20+
21+
@ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.SUITE)
22+
public class GetSettingsIT extends ESIntegTestCase {
23+
public void testGetDefaultValueWhenDependentOnOtherSettings() {
24+
final String indexName = "test-index-1";
25+
26+
Settings expectedSettings = Settings.builder()
27+
.put("index.mapping.source.mode", "SYNTHETIC")
28+
.put("index.mapping.total_fields.ignore_dynamic_beyond_limit", true)
29+
.put("index.recovery.use_synthetic_source", true)
30+
.put("index.mapping.ignore_above", 8191)
31+
.build();
32+
33+
assertAcked(prepareCreate(indexName).setSettings(Settings.builder().put("index.mode", "logsdb")).get());
34+
GetSettingsResponse unfilteredResponse = indicesAdmin().getSettings(
35+
new GetSettingsRequest(TEST_REQUEST_TIMEOUT).indices(indexName).includeDefaults(true)
36+
).actionGet();
37+
for (String key : expectedSettings.keySet()) {
38+
assertThat(unfilteredResponse.getSetting(indexName, key), equalTo(expectedSettings.get(key)));
39+
GetSettingsResponse filteredResponse = indicesAdmin().getSettings(
40+
new GetSettingsRequest(TEST_REQUEST_TIMEOUT).indices(indexName).includeDefaults(true).names(key)
41+
).actionGet();
42+
43+
var expectedFilteredSettingsMap = Map.of(indexName, expectedSettings.filter(key::equals));
44+
assertThat(
45+
filteredResponse,
46+
LambdaMatchers.transformedMatch(GetSettingsResponse::getIndexToDefaultSettings, equalTo(expectedFilteredSettingsMap))
47+
);
48+
}
49+
50+
}
51+
}

server/src/internalClusterTest/java/org/elasticsearch/reservedstate/service/FileSettingsServiceIT.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequest;
1616
import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
1717
import org.elasticsearch.cluster.ClusterChangedEvent;
18+
import org.elasticsearch.cluster.ClusterState;
1819
import org.elasticsearch.cluster.ClusterStateListener;
1920
import org.elasticsearch.cluster.metadata.ReservedStateErrorMetadata;
2021
import org.elasticsearch.cluster.metadata.ReservedStateHandlerMetadata;
@@ -39,6 +40,7 @@
3940
import java.util.concurrent.ExecutionException;
4041
import java.util.concurrent.TimeUnit;
4142
import java.util.concurrent.atomic.AtomicLong;
43+
import java.util.function.Function;
4244
import java.util.stream.Stream;
4345

4446
import static org.elasticsearch.cluster.metadata.ReservedStateMetadata.EMPTY_VERSION;
@@ -194,22 +196,29 @@ private Tuple<CountDownLatch, AtomicLong> setupClusterStateListener(String node,
194196
ClusterService clusterService = internalCluster().clusterService(node);
195197
CountDownLatch savedClusterState = new CountDownLatch(1);
196198
AtomicLong metadataVersion = new AtomicLong(-1);
199+
Function<ClusterState, Boolean> clusterStateProcessor = clusterState -> {
200+
ReservedStateMetadata reservedState = clusterState.metadata().reservedStateMetadata().get(FileSettingsService.NAMESPACE);
201+
if (reservedState != null && reservedState.version() == fileSettingsVersion) {
202+
metadataVersion.set(clusterState.metadata().version());
203+
savedClusterState.countDown();
204+
logger.info(
205+
"done waiting for file settings [version: {}, metadata version: {}]",
206+
clusterState.version(),
207+
clusterState.metadata().version()
208+
);
209+
return true;
210+
}
211+
return false;
212+
};
197213
clusterService.addListener(new ClusterStateListener() {
198214
@Override
199215
public void clusterChanged(ClusterChangedEvent event) {
200-
ReservedStateMetadata reservedState = event.state().metadata().reservedStateMetadata().get(FileSettingsService.NAMESPACE);
201-
if (reservedState != null && reservedState.version() == fileSettingsVersion) {
216+
if (clusterStateProcessor.apply(event.state())) {
202217
clusterService.removeListener(this);
203-
metadataVersion.set(event.state().metadata().version());
204-
savedClusterState.countDown();
205-
logger.info(
206-
"done waiting for file settings [version: {}, metadata version: {}]",
207-
event.state().version(),
208-
event.state().metadata().version()
209-
);
210218
}
211219
}
212220
});
221+
clusterStateProcessor.apply(clusterService.state());
213222

214223
return new Tuple<>(savedClusterState, metadataVersion);
215224
}

server/src/main/java/org/elasticsearch/action/admin/indices/settings/get/TransportGetSettingsAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ protected void localClusterStateOperation(
127127

128128
indexToSettings.put(concreteIndex.getName(), indexSettings);
129129
if (indexToDefaultSettings != null) {
130-
Settings defaultSettings = settingsFilter.filter(indexScopedSettings.diff(indexSettings, Settings.EMPTY));
130+
Settings defaultSettings = settingsFilter.filter(indexScopedSettings.diff(indexMetadata.getSettings(), Settings.EMPTY));
131131
if (isFilteredRequest(request)) {
132132
defaultSettings = defaultSettings.filter(k -> Regex.simpleMatch(request.names(), k));
133133
}

server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ public class IndexMetadata implements Diffable<IndexMetadata>, ToXContentFragmen
153153
public static final String EVENT_INGESTED_FIELD_NAME = "event.ingested";
154154

155155
private static final TransportVersion INDEX_RESHARDING_METADATA = TransportVersion.fromName("index_resharding_metadata");
156+
private static final TransportVersion INDEX_CREATED_TRANSPORT_VERSION = TransportVersion.fromName("index_created_transport_version");
156157

157158
@Nullable
158159
public String getDownsamplingInterval() {
@@ -583,6 +584,7 @@ public Iterator<Setting<?>> settings() {
583584
public static final List<String> PARTIALLY_MOUNTED_INDEX_TIER_PREFERENCE = List.of(DataTier.DATA_FROZEN);
584585

585586
static final String KEY_VERSION = "version";
587+
static final String KEY_TRANSPORT_VERSION = "transport_version";
586588
static final String KEY_MAPPING_VERSION = "mapping_version";
587589
static final String KEY_SETTINGS_VERSION = "settings_version";
588590
static final String KEY_ALIASES_VERSION = "aliases_version";
@@ -623,6 +625,7 @@ public Iterator<Setting<?>> settings() {
623625

624626
private final Index index;
625627
private final long version;
628+
private final TransportVersion transportVersion;
626629

627630
private final long mappingVersion;
628631

@@ -708,6 +711,7 @@ public Iterator<Setting<?>> settings() {
708711
private IndexMetadata(
709712
final Index index,
710713
final long version,
714+
final TransportVersion transportVersion,
711715
final long mappingVersion,
712716
final long settingsVersion,
713717
final long aliasesVersion,
@@ -758,6 +762,7 @@ private IndexMetadata(
758762
) {
759763
this.index = index;
760764
this.version = version;
765+
this.transportVersion = transportVersion;
761766
assert mappingVersion >= 0 : mappingVersion;
762767
this.mappingVersion = mappingVersion;
763768
this.mappingsUpdatedVersion = mappingsUpdatedVersion;
@@ -824,6 +829,7 @@ IndexMetadata withMappingMetadata(MappingMetadata mapping) {
824829
return new IndexMetadata(
825830
this.index,
826831
this.version,
832+
this.transportVersion,
827833
this.mappingVersion,
828834
this.settingsVersion,
829835
this.aliasesVersion,
@@ -887,6 +893,7 @@ public IndexMetadata withInSyncAllocationIds(int shardId, Set<String> inSyncSet)
887893
return new IndexMetadata(
888894
this.index,
889895
this.version,
896+
this.transportVersion,
890897
this.mappingVersion,
891898
this.settingsVersion,
892899
this.aliasesVersion,
@@ -958,6 +965,7 @@ public IndexMetadata withSetPrimaryTerm(int shardId, long primaryTerm) {
958965
return new IndexMetadata(
959966
this.index,
960967
this.version,
968+
this.transportVersion,
961969
this.mappingVersion,
962970
this.settingsVersion,
963971
this.aliasesVersion,
@@ -1020,6 +1028,7 @@ public IndexMetadata withTimestampRanges(IndexLongFieldRange timestampRange, Ind
10201028
return new IndexMetadata(
10211029
this.index,
10221030
this.version,
1031+
this.transportVersion,
10231032
this.mappingVersion,
10241033
this.settingsVersion,
10251034
this.aliasesVersion,
@@ -1077,6 +1086,7 @@ public IndexMetadata withIncrementedVersion() {
10771086
return new IndexMetadata(
10781087
this.index,
10791088
this.version + 1,
1089+
this.transportVersion,
10801090
this.mappingVersion,
10811091
this.settingsVersion,
10821092
this.aliasesVersion,
@@ -1139,6 +1149,10 @@ public long getVersion() {
11391149
return this.version;
11401150
}
11411151

1152+
public TransportVersion getTransportVersion() {
1153+
return transportVersion;
1154+
}
1155+
11421156
public long getMappingVersion() {
11431157
return mappingVersion;
11441158
}
@@ -1671,6 +1685,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
16711685
private final String index;
16721686
private final int routingNumShards;
16731687
private final long version;
1688+
private final TransportVersion transportVersion;
16741689
private final long mappingVersion;
16751690
private final long settingsVersion;
16761691
private final long aliasesVersion;
@@ -1704,6 +1719,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
17041719
IndexMetadataDiff(IndexMetadata before, IndexMetadata after) {
17051720
index = after.index.getName();
17061721
version = after.version;
1722+
transportVersion = after.transportVersion;
17071723
mappingVersion = after.mappingVersion;
17081724
settingsVersion = after.settingsVersion;
17091725
aliasesVersion = after.aliasesVersion;
@@ -1757,6 +1773,9 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
17571773
index = in.readString();
17581774
routingNumShards = in.readInt();
17591775
version = in.readLong();
1776+
transportVersion = in.getTransportVersion().supports(INDEX_CREATED_TRANSPORT_VERSION)
1777+
? TransportVersion.readVersion(in)
1778+
: TransportVersion.fromId(0);
17601779
mappingVersion = in.readVLong();
17611780
settingsVersion = in.readVLong();
17621781
aliasesVersion = in.readVLong();
@@ -1824,6 +1843,9 @@ public void writeTo(StreamOutput out) throws IOException {
18241843
out.writeString(index);
18251844
out.writeInt(routingNumShards);
18261845
out.writeLong(version);
1846+
if (out.getTransportVersion().supports(INDEX_CREATED_TRANSPORT_VERSION)) {
1847+
TransportVersion.writeVersion(transportVersion, out);
1848+
}
18271849
out.writeVLong(mappingVersion);
18281850
out.writeVLong(settingsVersion);
18291851
out.writeVLong(aliasesVersion);
@@ -1864,6 +1886,7 @@ public void writeTo(StreamOutput out) throws IOException {
18641886
public IndexMetadata apply(IndexMetadata part) {
18651887
Builder builder = builder(index);
18661888
builder.version(version);
1889+
builder.transportVersion(transportVersion);
18671890
builder.mappingVersion(mappingVersion);
18681891
builder.settingsVersion(settingsVersion);
18691892
builder.aliasesVersion(aliasesVersion);
@@ -1907,6 +1930,11 @@ public static IndexMetadata readFrom(StreamInput in) throws IOException {
19071930
public static IndexMetadata readFrom(StreamInput in, @Nullable Function<String, MappingMetadata> mappingLookup) throws IOException {
19081931
Builder builder = new Builder(in.readString());
19091932
builder.version(in.readLong());
1933+
builder.transportVersion(
1934+
in.getTransportVersion().supports(INDEX_CREATED_TRANSPORT_VERSION)
1935+
? TransportVersion.readVersion(in)
1936+
: TransportVersion.fromId(0)
1937+
);
19101938
builder.mappingVersion(in.readVLong());
19111939
builder.settingsVersion(in.readVLong());
19121940
builder.aliasesVersion(in.readVLong());
@@ -1974,6 +2002,9 @@ public static IndexMetadata readFrom(StreamInput in, @Nullable Function<String,
19742002
public void writeTo(StreamOutput out, boolean mappingsAsHash) throws IOException {
19752003
out.writeString(index.getName()); // uuid will come as part of settings
19762004
out.writeLong(version);
2005+
if (out.getTransportVersion().supports(INDEX_CREATED_TRANSPORT_VERSION)) {
2006+
TransportVersion.writeVersion(transportVersion, out);
2007+
}
19772008
out.writeVLong(mappingVersion);
19782009
out.writeVLong(settingsVersion);
19792010
out.writeVLong(aliasesVersion);
@@ -2049,6 +2080,7 @@ public static class Builder {
20492080
private String index;
20502081
private State state = State.OPEN;
20512082
private long version = 1;
2083+
private TransportVersion transportVersion = TransportVersion.fromId(0);
20522084
private long mappingVersion = 1;
20532085
private long settingsVersion = 1;
20542086
private long aliasesVersion = 1;
@@ -2085,6 +2117,7 @@ public Builder(IndexMetadata indexMetadata) {
20852117
this.index = indexMetadata.getIndex().getName();
20862118
this.state = indexMetadata.state;
20872119
this.version = indexMetadata.version;
2120+
this.transportVersion = indexMetadata.transportVersion;
20882121
this.mappingVersion = indexMetadata.mappingVersion;
20892122
this.settingsVersion = indexMetadata.settingsVersion;
20902123
this.aliasesVersion = indexMetadata.aliasesVersion;
@@ -2293,6 +2326,15 @@ public Builder version(long version) {
22932326
return this;
22942327
}
22952328

2329+
public TransportVersion transportVersion() {
2330+
return this.transportVersion;
2331+
}
2332+
2333+
public Builder transportVersion(TransportVersion transportVersion) {
2334+
this.transportVersion = transportVersion;
2335+
return this;
2336+
}
2337+
22962338
public long mappingVersion() {
22972339
return mappingVersion;
22982340
}
@@ -2558,6 +2600,7 @@ IndexMetadata build(boolean repair) {
25582600
return new IndexMetadata(
25592601
new Index(index, uuid),
25602602
version,
2603+
transportVersion,
25612604
mappingVersion,
25622605
settingsVersion,
25632606
aliasesVersion,
@@ -2617,6 +2660,7 @@ public static void toXContent(IndexMetadata indexMetadata, XContentBuilder build
26172660
builder.startObject(indexMetadata.getIndex().getName());
26182661

26192662
builder.field(KEY_VERSION, indexMetadata.getVersion());
2663+
builder.field(KEY_TRANSPORT_VERSION, indexMetadata.getTransportVersion().toString());
26202664
builder.field(KEY_MAPPING_VERSION, indexMetadata.getMappingVersion());
26212665
builder.field(KEY_SETTINGS_VERSION, indexMetadata.getSettingsVersion());
26222666
builder.field(KEY_ALIASES_VERSION, indexMetadata.getAliasesVersion());
@@ -2874,6 +2918,7 @@ public static IndexMetadata fromXContent(XContentParser parser, Map<String, Mapp
28742918
switch (currentFieldName) {
28752919
case KEY_STATE -> builder.state(State.fromString(parser.text()));
28762920
case KEY_VERSION -> builder.version(parser.longValue());
2921+
case KEY_TRANSPORT_VERSION -> builder.transportVersion(TransportVersion.fromString(parser.text()));
28772922
case KEY_MAPPING_VERSION -> {
28782923
mappingVersion = true;
28792924
builder.mappingVersion(parser.longValue());

server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ private IndexMetadata buildAndValidateTemporaryIndexMetadata(
627627
final IndexMetadata.Builder tmpImdBuilder = IndexMetadata.builder(request.index());
628628
tmpImdBuilder.setRoutingNumShards(routingNumShards);
629629
tmpImdBuilder.settings(indexSettings);
630+
tmpImdBuilder.transportVersion(TransportVersion.current());
630631
tmpImdBuilder.system(isSystem);
631632

632633
// Set up everything, now locally create the index to see that things are ok, and apply
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9213000,9185007,9112012
1+
9213000,9185007,9112012,8841074

0 commit comments

Comments
 (0)