Skip to content

Commit aa9d596

Browse files
committed
Pass in settings builder
1 parent fd161dc commit aa9d596

File tree

17 files changed

+275
-194
lines changed

17 files changed

+275
-194
lines changed

modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamIndexSettingsProvider.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,16 @@ public class DataStreamIndexSettingsProvider implements IndexSettingProvider {
5858
}
5959

6060
@Override
61-
public Settings getAdditionalIndexSettings(
61+
public void getAdditionalIndexSettings(
6262
String indexName,
6363
@Nullable String dataStreamName,
6464
@Nullable IndexMode templateIndexMode,
6565
ProjectMetadata projectMetadata,
6666
Instant resolvedAt,
6767
Settings indexTemplateAndCreateRequestSettings,
6868
List<CompressedXContent> combinedTemplateMappings,
69-
BiConsumer<String, Map<String, String>> extraCustomMetadata
69+
Settings.Builder additionalSettings,
70+
BiConsumer<String, Map<String, String>> additionalCustomMetadata
7071
) {
7172
if (dataStreamName != null) {
7273
DataStream dataStream = projectMetadata.dataStreams().get(dataStreamName);
@@ -89,7 +90,6 @@ public Settings getAdditionalIndexSettings(
8990
}
9091
if (indexMode != null) {
9192
if (indexMode == IndexMode.TIME_SERIES) {
92-
Settings.Builder builder = Settings.builder();
9393
TimeValue lookAheadTime = DataStreamsPlugin.getLookAheadTime(indexTemplateAndCreateRequestSettings);
9494
TimeValue lookBackTime = DataStreamsPlugin.LOOK_BACK_TIME.get(indexTemplateAndCreateRequestSettings);
9595
final Instant start;
@@ -117,8 +117,8 @@ public Settings getAdditionalIndexSettings(
117117
}
118118
}
119119
assert start.isBefore(end) : "data stream backing index's start time is not before end time";
120-
builder.put(IndexSettings.TIME_SERIES_START_TIME.getKey(), FORMATTER.format(start));
121-
builder.put(IndexSettings.TIME_SERIES_END_TIME.getKey(), FORMATTER.format(end));
120+
additionalSettings.put(IndexSettings.TIME_SERIES_START_TIME.getKey(), FORMATTER.format(start));
121+
additionalSettings.put(IndexSettings.TIME_SERIES_END_TIME.getKey(), FORMATTER.format(end));
122122

123123
if (indexTemplateAndCreateRequestSettings.hasValue(IndexMetadata.INDEX_ROUTING_PATH.getKey()) == false
124124
&& combinedTemplateMappings.isEmpty() == false) {
@@ -128,15 +128,12 @@ public Settings getAdditionalIndexSettings(
128128
combinedTemplateMappings
129129
);
130130
if (routingPaths.isEmpty() == false) {
131-
builder.putList(INDEX_ROUTING_PATH.getKey(), routingPaths);
131+
additionalSettings.putList(INDEX_ROUTING_PATH.getKey(), routingPaths);
132132
}
133133
}
134-
return builder.build();
135134
}
136135
}
137136
}
138-
139-
return Settings.EMPTY;
140137
}
141138

142139
/**

modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/TransportGetDataStreamsAction.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.elasticsearch.cluster.metadata.ProjectMetadata;
3737
import org.elasticsearch.cluster.project.ProjectResolver;
3838
import org.elasticsearch.cluster.service.ClusterService;
39-
import org.elasticsearch.common.collect.ImmutableOpenMap;
4039
import org.elasticsearch.common.settings.ClusterSettings;
4140
import org.elasticsearch.common.settings.Settings;
4241
import org.elasticsearch.core.Nullable;
@@ -199,17 +198,20 @@ static IndexMode resolveMode(
199198
) {
200199
IndexMode indexMode = state.metadata().retrieveIndexModeFromTemplate(indexTemplate);
201200
for (IndexSettingProvider provider : indexSettingProviders.getIndexSettingProviders()) {
202-
Settings addlSettinsg = provider.getAdditionalIndexSettings(
201+
Settings.Builder builder = Settings.builder();
202+
provider.getAdditionalIndexSettings(
203203
MetadataIndexTemplateService.VALIDATE_INDEX_NAME,
204204
dataStream.getName(),
205205
indexMode,
206206
state.metadata(),
207207
Instant.now(),
208208
settings,
209209
List.of(),
210-
ImmutableOpenMap.builder()::put
210+
builder,
211+
(k, v) -> {}
211212
);
212-
var rawMode = addlSettinsg.get(IndexSettings.MODE.getKey());
213+
Settings addlSettings = builder.build();
214+
var rawMode = addlSettings.get(IndexSettings.MODE.getKey());
213215
if (rawMode != null) {
214216
indexMode = Enum.valueOf(IndexMode.class, rawMode.toUpperCase(Locale.ROOT));
215217
}

modules/data-streams/src/test/java/org/elasticsearch/datastreams/DataStreamIndexSettingsProviderTests.java

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,19 @@ public void testGetAdditionalIndexSettings() throws Exception {
7575
}
7676
}
7777
""";
78-
Settings result = provider.getAdditionalIndexSettings(
78+
Settings.Builder additionalSettings = builder();
79+
provider.getAdditionalIndexSettings(
7980
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
8081
dataStreamName,
8182
IndexMode.TIME_SERIES,
8283
projectMetadata,
8384
now,
8485
settings,
8586
List.of(new CompressedXContent(mapping)),
87+
additionalSettings,
8688
(k, v) -> {}
8789
);
90+
Settings result = additionalSettings.build();
8891
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
8992
// (in production the index.mode setting is usually provided in an index or component template)
9093
result = builder().put(result).put("index.mode", "time_series").build();
@@ -121,16 +124,19 @@ public void testGetAdditionalIndexSettingsIndexRoutingPathAlreadyDefined() throw
121124
}
122125
}
123126
""";
124-
Settings result = provider.getAdditionalIndexSettings(
127+
Settings.Builder additionalSettings = builder();
128+
provider.getAdditionalIndexSettings(
125129
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
126130
dataStreamName,
127131
IndexMode.TIME_SERIES,
128132
projectMetadata,
129133
now,
130134
settings,
131135
List.of(new CompressedXContent(mapping)),
136+
additionalSettings,
132137
(k, v) -> {}
133138
);
139+
Settings result = additionalSettings.build();
134140
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
135141
// (in production the index.mode setting is usually provided in an index or component template)
136142
result = builder().put(result).put("index.mode", "time_series").build();
@@ -192,16 +198,19 @@ public void testGetAdditionalIndexSettingsMappingsMerging() throws Exception {
192198
}
193199
}
194200
""";
195-
Settings result = provider.getAdditionalIndexSettings(
201+
Settings.Builder additionalSettings = builder();
202+
provider.getAdditionalIndexSettings(
196203
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
197204
dataStreamName,
198205
IndexMode.TIME_SERIES,
199206
projectMetadata,
200207
now,
201208
settings,
202209
List.of(new CompressedXContent(mapping1), new CompressedXContent(mapping2), new CompressedXContent(mapping3)),
210+
additionalSettings,
203211
(k, v) -> {}
204212
);
213+
Settings result = additionalSettings.build();
205214
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
206215
// (in production the index.mode setting is usually provided in an index or component template)
207216
result = builder().put(result).put("index.mode", "time_series").build();
@@ -218,16 +227,19 @@ public void testGetAdditionalIndexSettingsNoMappings() {
218227

219228
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
220229
Settings settings = Settings.EMPTY;
221-
Settings result = provider.getAdditionalIndexSettings(
230+
Settings.Builder additionalSettings = builder();
231+
provider.getAdditionalIndexSettings(
222232
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
223233
dataStreamName,
224234
IndexMode.TIME_SERIES,
225235
projectMetadata,
226236
now,
227237
settings,
228238
List.of(),
239+
additionalSettings,
229240
(k, v) -> {}
230241
);
242+
Settings result = additionalSettings.build();
231243
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
232244
// (in production the index.mode setting is usually provided in an index or component template)
233245
result = builder().put(result).put("index.mode", "time_series").build();
@@ -244,16 +256,19 @@ public void testGetAdditionalIndexSettingsLookAheadTime() throws Exception {
244256
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
245257
TimeValue lookAheadTime = TimeValue.timeValueMinutes(30);
246258
Settings settings = builder().put("index.mode", "time_series").put("index.look_ahead_time", lookAheadTime.getStringRep()).build();
247-
Settings result = provider.getAdditionalIndexSettings(
259+
Settings.Builder additionalSettings = builder();
260+
provider.getAdditionalIndexSettings(
248261
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
249262
dataStreamName,
250263
IndexMode.TIME_SERIES,
251264
projectMetadata,
252265
now,
253266
settings,
254267
List.of(new CompressedXContent("{}")),
268+
additionalSettings,
255269
(k, v) -> {}
256270
);
271+
Settings result = additionalSettings.build();
257272
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
258273
// (in production the index.mode setting is usually provided in an index or component template)
259274
result = builder().put(result).put("index.mode", "time_series").build();
@@ -270,16 +285,19 @@ public void testGetAdditionalIndexSettingsLookBackTime() throws Exception {
270285
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);
271286
TimeValue lookBackTime = TimeValue.timeValueHours(12);
272287
Settings settings = builder().put("index.mode", "time_series").put("index.look_back_time", lookBackTime.getStringRep()).build();
273-
Settings result = provider.getAdditionalIndexSettings(
288+
Settings.Builder additionalSettings = builder();
289+
provider.getAdditionalIndexSettings(
274290
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
275291
dataStreamName,
276292
IndexMode.TIME_SERIES,
277293
projectMetadata,
278294
now,
279295
settings,
280296
List.of(new CompressedXContent("{}")),
297+
additionalSettings,
281298
(k, v) -> {}
282299
);
300+
Settings result = additionalSettings.build();
283301
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
284302
// (in production the index.mode setting is usually provided in an index or component template)
285303
result = builder().put(result).put("index.mode", "time_series").build();
@@ -303,16 +321,19 @@ public void testGetAdditionalIndexSettingsDataStreamAlreadyCreated() throws Exce
303321

304322
Instant now = sixHoursAgo.plus(6, ChronoUnit.HOURS);
305323
Settings settings = Settings.EMPTY;
306-
var result = provider.getAdditionalIndexSettings(
324+
Settings.Builder additionalSettings = builder();
325+
provider.getAdditionalIndexSettings(
307326
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
308327
dataStreamName,
309328
IndexMode.TIME_SERIES,
310329
projectMetadata,
311330
now,
312331
settings,
313332
List.of(new CompressedXContent("{}")),
333+
additionalSettings,
314334
(k, v) -> {}
315335
);
336+
var result = additionalSettings.build();
316337
assertThat(result.size(), equalTo(2));
317338
assertThat(result.get(IndexSettings.TIME_SERIES_START_TIME.getKey()), equalTo(FORMATTER.format(currentEnd)));
318339
assertThat(
@@ -349,6 +370,7 @@ public void testGetAdditionalIndexSettingsDataStreamAlreadyCreatedTimeSettingsMi
349370
now,
350371
settings,
351372
null,
373+
builder(),
352374
(k, v) -> {}
353375
)
354376
);
@@ -368,16 +390,19 @@ public void testGetAdditionalIndexSettingsNonTsdbTemplate() {
368390
String dataStreamName = "logs-app1";
369391

370392
Settings settings = Settings.EMPTY;
371-
Settings result = provider.getAdditionalIndexSettings(
393+
Settings.Builder additionalSettings = builder();
394+
provider.getAdditionalIndexSettings(
372395
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
373396
dataStreamName,
374397
null,
375398
projectMetadata,
376399
Instant.ofEpochMilli(1L),
377400
settings,
378401
null,
402+
additionalSettings,
379403
(k, v) -> {}
380404
);
405+
Settings result = additionalSettings.build();
381406
assertThat(result.size(), equalTo(0));
382407
}
383408

@@ -391,16 +416,19 @@ public void testGetAdditionalIndexSettingsMigrateToTsdb() {
391416
.build();
392417

393418
Settings settings = Settings.EMPTY;
394-
Settings result = provider.getAdditionalIndexSettings(
419+
Settings.Builder additionalSettings = builder();
420+
provider.getAdditionalIndexSettings(
395421
DataStream.getDefaultBackingIndexName(dataStreamName, 2),
396422
dataStreamName,
397423
IndexMode.TIME_SERIES,
398424
projectMetadata,
399425
now,
400426
settings,
401427
List.of(),
428+
additionalSettings,
402429
(k, v) -> {}
403430
);
431+
Settings result = additionalSettings.build();
404432
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
405433
// (in production the index.mode setting is usually provided in an index or component template)
406434
result = builder().put(result).put("index.mode", "time_series").build();
@@ -421,17 +449,19 @@ public void testGetAdditionalIndexSettingsDowngradeFromTsdb() {
421449
1
422450
);
423451

424-
Settings settings = Settings.EMPTY;
425-
Settings result = provider.getAdditionalIndexSettings(
452+
Settings.Builder additionalSettings = builder();
453+
provider.getAdditionalIndexSettings(
426454
DataStream.getDefaultBackingIndexName(dataStreamName, 2),
427455
dataStreamName,
428456
null,
429457
projectMetadata,
430458
Instant.ofEpochMilli(1L),
431-
settings,
459+
Settings.EMPTY,
432460
List.of(),
461+
additionalSettings,
433462
(k, v) -> {}
434463
);
464+
Settings result = additionalSettings.build();
435465
assertThat(result.size(), equalTo(0));
436466
}
437467

@@ -702,16 +732,19 @@ private Settings generateTsdbSettings(String mapping, Instant now) throws IOExce
702732
String dataStreamName = "logs-app1";
703733
Settings settings = Settings.EMPTY;
704734

705-
var result = provider.getAdditionalIndexSettings(
735+
Settings.Builder additionalSettings = builder();
736+
provider.getAdditionalIndexSettings(
706737
DataStream.getDefaultBackingIndexName(dataStreamName, 1),
707738
dataStreamName,
708739
IndexMode.TIME_SERIES,
709740
projectMetadata,
710741
now,
711742
settings,
712743
List.of(new CompressedXContent(mapping)),
744+
additionalSettings,
713745
(k, v) -> {}
714746
);
747+
var result = additionalSettings.build();
715748
// The index.time_series.end_time setting requires index.mode to be set to time_series adding it here so that we read this setting:
716749
// (in production the index.mode setting is usually provided in an index or component template)
717750
return builder().put(result).put("index.mode", "time_series").build();

modules/data-streams/src/test/java/org/elasticsearch/datastreams/action/TransportGetDataStreamsActionTests.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -495,17 +495,18 @@ public void testProvidersAffectMode() {
495495
emptyDataStreamFailureStoreSettings,
496496
new IndexSettingProviders(Set.of(new IndexSettingProvider() {
497497
@Override
498-
public Settings getAdditionalIndexSettings(
498+
public void getAdditionalIndexSettings(
499499
String indexName,
500500
String dataStreamName,
501501
IndexMode templateIndexMode,
502502
ProjectMetadata metadata,
503503
Instant resolvedAt,
504504
Settings indexTemplateAndCreateRequestSettings,
505505
List<CompressedXContent> combinedTemplateMappings,
506-
BiConsumer<String, Map<String, String>> extraCustomMetadata
506+
Settings.Builder additionalSettings,
507+
BiConsumer<String, Map<String, String>> additionalCustomMetadata
507508
) {
508-
return Settings.builder().put("index.mode", IndexMode.LOOKUP).build();
509+
additionalSettings.put("index.mode", IndexMode.LOOKUP);
509510
}
510511
})),
511512
null

server/src/main/java/org/elasticsearch/action/admin/indices/template/post/TransportSimulateIndexTemplateAction.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.elasticsearch.cluster.project.ProjectResolver;
3030
import org.elasticsearch.cluster.service.ClusterService;
3131
import org.elasticsearch.common.UUIDs;
32-
import org.elasticsearch.common.collect.ImmutableOpenMap;
3332
import org.elasticsearch.common.compress.CompressedXContent;
3433
import org.elasticsearch.common.settings.ClusterSettings;
3534
import org.elasticsearch.common.settings.Settings;
@@ -279,16 +278,19 @@ public static Template resolveTemplate(
279278
Settings.Builder additionalSettings = Settings.builder();
280279
Set<String> overrulingSettings = new HashSet<>();
281280
for (var provider : indexSettingProviders) {
282-
Settings result = provider.getAdditionalIndexSettings(
281+
Settings.Builder builder = Settings.builder();
282+
provider.getAdditionalIndexSettings(
283283
indexName,
284284
template.getDataStreamTemplate() != null ? indexName : null,
285285
simulatedProject.retrieveIndexModeFromTemplate(template),
286286
simulatedProject,
287287
now,
288288
templateSettings,
289289
mappings,
290-
ImmutableOpenMap.builder()::put
290+
builder,
291+
(k, v) -> {}
291292
);
293+
Settings result = builder.build();
292294
MetadataCreateIndexService.validateAdditionalSettings(provider, result, additionalSettings);
293295
dummySettings.put(result);
294296
additionalSettings.put(result);

0 commit comments

Comments
 (0)