Skip to content

Commit b42286f

Browse files
committed
Revert adding ability to set private settings when system-provided
1 parent e0be278 commit b42286f

File tree

5 files changed

+39
-78
lines changed

5 files changed

+39
-78
lines changed

server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexClusterStateUpdateRequest.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ public class CreateIndexClusterStateUpdateRequest {
5252

5353
private ComposableIndexTemplate matchingTemplate;
5454

55-
private boolean settingsSystemProvided = false;
56-
5755
/**
5856
* @deprecated project id ought always be specified
5957
*/
@@ -225,19 +223,6 @@ public CreateIndexClusterStateUpdateRequest setMatchingTemplate(ComposableIndexT
225223
return this;
226224
}
227225

228-
/**
229-
* Indicates whether the {@link #settings} of this request are system provided.
230-
* If this is true, private settings will be allowed to be set in the request.
231-
*/
232-
public CreateIndexClusterStateUpdateRequest settingsSystemProvided(boolean settingsSystemProvided) {
233-
this.settingsSystemProvided = settingsSystemProvided;
234-
return this;
235-
}
236-
237-
public boolean settingsSystemProvided() {
238-
return settingsSystemProvided;
239-
}
240-
241226
@Override
242227
public String toString() {
243228
return "CreateIndexClusterStateUpdateRequest{"

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

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1602,12 +1602,12 @@ private static void validateActiveShardCount(ActiveShardCount waitForActiveShard
16021602

16031603
private void validate(CreateIndexClusterStateUpdateRequest request, ProjectMetadata projectMetadata, RoutingTable routingTable) {
16041604
validateIndexName(request.index(), projectMetadata, routingTable);
1605-
validateIndexSettings(request.index(), request.settings(), forbidPrivateIndexSettings && request.settingsSystemProvided() == false);
1605+
validateIndexSettings(request.index(), request.settings(), forbidPrivateIndexSettings);
16061606
}
16071607

16081608
public void validateIndexSettings(String indexName, final Settings settings, final boolean forbidPrivateIndexSettings)
16091609
throws IndexCreationException {
1610-
List<String> validationErrors = getIndexSettingsValidationErrors(settings, null, forbidPrivateIndexSettings);
1610+
List<String> validationErrors = getIndexSettingsValidationErrors(settings, forbidPrivateIndexSettings);
16111611

16121612
if (validationErrors.isEmpty() == false) {
16131613
ValidationException validationException = new ValidationException();
@@ -1616,30 +1616,21 @@ public void validateIndexSettings(String indexName, final Settings settings, fin
16161616
}
16171617
}
16181618

1619-
List<String> getIndexSettingsValidationErrors(
1620-
final Settings settings,
1621-
@Nullable Settings systemProvided,
1622-
final boolean forbidPrivateIndexSettings
1623-
) {
1619+
List<String> getIndexSettingsValidationErrors(final Settings settings, final boolean forbidPrivateIndexSettings) {
16241620
List<String> validationErrors = validateIndexCustomPath(settings, env.sharedDataDir());
16251621
if (forbidPrivateIndexSettings) {
1626-
validationErrors.addAll(validatePrivateSettingsNotExplicitlySet(settings, systemProvided, indexScopedSettings));
1622+
validationErrors.addAll(validatePrivateSettingsNotExplicitlySet(settings, indexScopedSettings));
16271623
}
16281624
return validationErrors;
16291625
}
16301626

1631-
private static List<String> validatePrivateSettingsNotExplicitlySet(
1632-
Settings settings,
1633-
@Nullable Settings systemProvided,
1634-
IndexScopedSettings indexScopedSettings
1635-
) {
1627+
private static List<String> validatePrivateSettingsNotExplicitlySet(Settings settings, IndexScopedSettings indexScopedSettings) {
16361628
List<String> validationErrors = new ArrayList<>();
16371629
for (final String key : settings.keySet()) {
16381630
final Setting<?> setting = indexScopedSettings.get(key);
16391631
if (setting == null) {
16401632
assert indexScopedSettings.isPrivateSetting(key) : "expected [" + key + "] to be private but it was not";
1641-
} else if (setting.isPrivateIndex() && (systemProvided == null || settings.get(key).equals(systemProvided.get(key)) == false)) {
1642-
// if the setting is system provided, they're not set by the user
1633+
} else if (setting.isPrivateIndex()) {
16431634
validationErrors.add("private index setting [" + key + "] can not be set explicitly");
16441635
}
16451636
}

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

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,6 @@ void validateIndexTemplateV2(ProjectMetadata projectMetadata, String name, Compo
790790
final var combinedSettings = resolveSettings(indexTemplate, projectMetadata.componentTemplates());
791791
// First apply settings sourced from index setting providers:
792792
var finalSettings = Settings.builder();
793-
var additionalSettingsBuilder = Settings.builder();
794793
ImmutableOpenMap.Builder<String, Map<String, String>> customMetadataBuilder = ImmutableOpenMap.builder();
795794
for (var provider : indexSettingProviders) {
796795
var newAdditionalSettings = provider.getAdditionalIndexSettings(
@@ -803,11 +802,9 @@ void validateIndexTemplateV2(ProjectMetadata projectMetadata, String name, Compo
803802
combinedMappings,
804803
customMetadataBuilder
805804
);
806-
MetadataCreateIndexService.validateAdditionalSettings(provider, newAdditionalSettings, additionalSettingsBuilder);
807-
additionalSettingsBuilder.put(newAdditionalSettings);
805+
MetadataCreateIndexService.validateAdditionalSettings(provider, newAdditionalSettings, finalSettings);
806+
finalSettings.put(newAdditionalSettings);
808807
}
809-
Settings additionalSettings = additionalSettingsBuilder.build();
810-
finalSettings.put(additionalSettings);
811808
// Then apply setting from component templates:
812809
finalSettings.put(combinedSettings);
813810
// Then finally apply settings resolved from index template:
@@ -817,7 +814,7 @@ void validateIndexTemplateV2(ProjectMetadata projectMetadata, String name, Compo
817814

818815
var templateToValidate = indexTemplate.toBuilder().template(Template.builder(finalTemplate).settings(finalSettings)).build();
819816

820-
validate(name, templateToValidate, additionalSettings);
817+
validate(name, templateToValidate);
821818
validateDataStreamsStillReferenced(projectMetadata, name, templateToValidate);
822819
validateLifecycle(projectMetadata, name, templateToValidate, globalRetentionSettings.get(false));
823820
validateDataStreamOptions(projectMetadata, name, templateToValidate, globalRetentionSettings.get(true));
@@ -2056,20 +2053,19 @@ public static void validateTemplate(Settings validateSettings, CompressedXConten
20562053
});
20572054
}
20582055

2059-
public void validate(String name, ComponentTemplate template) {
2060-
validate(name, template.template(), Collections.emptyList(), null);
2056+
private void validate(String name, ComponentTemplate template) {
2057+
validate(name, template.template(), Collections.emptyList());
20612058
}
20622059

2063-
private void validate(String name, ComposableIndexTemplate template, Settings systemProvided) {
2064-
validate(name, template.template(), template.indexPatterns(), systemProvided);
2060+
private void validate(String name, ComposableIndexTemplate template) {
2061+
validate(name, template.template(), template.indexPatterns());
20652062
}
20662063

2067-
private void validate(String name, Template template, List<String> indexPatterns, @Nullable Settings systemProvided) {
2064+
private void validate(String name, Template template, List<String> indexPatterns) {
20682065
Optional<Template> maybeTemplate = Optional.ofNullable(template);
20692066
validate(
20702067
name,
20712068
maybeTemplate.map(Template::settings).orElse(Settings.EMPTY),
2072-
systemProvided,
20732069
indexPatterns,
20742070
maybeTemplate.map(Template::aliases).orElse(emptyMap()).values().stream().map(MetadataIndexTemplateService::toAlias).toList()
20752071
);
@@ -2088,16 +2084,10 @@ private static Alias toAlias(AliasMetadata aliasMeta) {
20882084
}
20892085

20902086
private void validate(PutRequest putRequest) {
2091-
validate(putRequest.name, putRequest.settings, null, putRequest.indexPatterns, putRequest.aliases);
2087+
validate(putRequest.name, putRequest.settings, putRequest.indexPatterns, putRequest.aliases);
20922088
}
20932089

2094-
private void validate(
2095-
String name,
2096-
@Nullable Settings settings,
2097-
@Nullable Settings systemProvided,
2098-
List<String> indexPatterns,
2099-
List<Alias> aliases
2100-
) {
2090+
private void validate(String name, @Nullable Settings settings, List<String> indexPatterns, List<Alias> aliases) {
21012091
List<String> validationErrors = new ArrayList<>();
21022092
if (name.contains(" ")) {
21032093
validationErrors.add("name must not contain a space");
@@ -2150,11 +2140,7 @@ private void validate(
21502140
validationErrors.add(t.getMessage());
21512141
}
21522142
}
2153-
List<String> indexSettingsValidation = metadataCreateIndexService.getIndexSettingsValidationErrors(
2154-
settings,
2155-
systemProvided,
2156-
true
2157-
);
2143+
List<String> indexSettingsValidation = metadataCreateIndexService.getIndexSettingsValidationErrors(settings, true);
21582144
validationErrors.addAll(indexSettingsValidation);
21592145
}
21602146

x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -945,9 +945,6 @@ private void createDownsampleIndex(
945945
if (sourceIndexMetadata.getRoutingPaths().isEmpty() == false) {
946946
builder.putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), sourceIndexMetadata.getRoutingPaths());
947947
}
948-
if (sourceIndexMetadata.getTimeSeriesDimensions().isEmpty() == false) {
949-
builder.putList(IndexMetadata.INDEX_DIMENSIONS.getKey(), sourceIndexMetadata.getTimeSeriesDimensions());
950-
}
951948
if (sourceIndexMetadata.getSettings().hasValue(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey())) {
952949
builder.put(
953950
MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(),
@@ -966,7 +963,7 @@ private void createDownsampleIndex(
966963
projectId,
967964
downsampleIndexName,
968965
downsampleIndexName
969-
).settings(builder.build()).settingsSystemProvided(true).mappings(mapping).waitForActiveShards(ActiveShardCount.ONE);
966+
).settings(builder.build()).mappings(mapping).waitForActiveShards(ActiveShardCount.ONE);
970967
var delegate = new AllocationActionListener<>(listener, threadPool.getThreadContext());
971968
taskQueue.submitTask("create-downsample-index [" + downsampleIndexName + "]", new DownsampleClusterStateUpdateTask(listener) {
972969
@Override

x-pack/plugin/downsample/src/test/java/org/elasticsearch/xpack/downsample/DownsampleDataStreamTests.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -188,27 +188,29 @@ public void testDataStreamDownsample() throws ExecutionException, InterruptedExc
188188

189189
private void putComposableIndexTemplate(final String id, final List<String> patterns) throws IOException {
190190
final TransportPutComposableIndexTemplateAction.Request request = new TransportPutComposableIndexTemplateAction.Request(id);
191-
Settings.Builder settings = indexSettings(1, 0).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES);
192-
if (randomBoolean()) {
193-
settings.putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), List.of("routing_field"));
194-
}
195-
final Template template = new Template(settings.build(), new CompressedXContent("""
196-
{
197-
"properties": {
198-
"@timestamp" : {
199-
"type": "date"
200-
},
201-
"routing_field": {
202-
"type": "keyword",
203-
"time_series_dimension": true
204-
},
205-
"counter": {
206-
"type": "long",
207-
"time_series_metric": "counter"
191+
final Template template = new Template(
192+
indexSettings(1, 0).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
193+
.putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), List.of("routing_field"))
194+
.build(),
195+
new CompressedXContent("""
196+
{
197+
"properties": {
198+
"@timestamp" : {
199+
"type": "date"
200+
},
201+
"routing_field": {
202+
"type": "keyword",
203+
"time_series_dimension": true
204+
},
205+
"counter": {
206+
"type": "long",
207+
"time_series_metric": "counter"
208+
}
208209
}
209210
}
210-
}
211-
"""), null);
211+
"""),
212+
null
213+
);
212214
request.indexTemplate(
213215
ComposableIndexTemplate.builder()
214216
.indexPatterns(patterns)

0 commit comments

Comments
 (0)