Skip to content

Commit c5afbd4

Browse files
masseykekderusso
authored andcommitted
Using a temp IndexService for template validation (elastic#129507)
1 parent 1214fdf commit c5afbd4

File tree

2 files changed

+22
-36
lines changed

2 files changed

+22
-36
lines changed

docs/changelog/129507.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 129507
2+
summary: Using a temp `IndexService` for template validation
3+
area: Indices APIs
4+
type: bug
5+
issues:
6+
- 129473

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

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@
3737
import org.elasticsearch.core.Nullable;
3838
import org.elasticsearch.core.TimeValue;
3939
import org.elasticsearch.core.Tuple;
40-
import org.elasticsearch.index.CloseUtils;
41-
import org.elasticsearch.index.Index;
4240
import org.elasticsearch.index.IndexService;
4341
import org.elasticsearch.index.IndexSettingProvider;
4442
import org.elasticsearch.index.IndexSettingProviders;
@@ -83,7 +81,6 @@
8381

8482
import static java.util.Collections.emptyMap;
8583
import static org.elasticsearch.cluster.metadata.MetadataCreateDataStreamService.validateTimestampFieldMapping;
86-
import static org.elasticsearch.indices.cluster.IndexRemovalReason.NO_LONGER_ASSIGNED;
8784

8885
/**
8986
* Service responsible for submitting index templates updates
@@ -1950,45 +1947,28 @@ static void validateTemplate(Settings validateSettings, CompressedXContent mappi
19501947
settings = Settings.EMPTY;
19511948
}
19521949

1953-
Index createdIndex = null;
19541950
final String temporaryIndexName = UUIDs.randomBase64UUID();
1955-
try {
1956-
// use the provided values, otherwise just pick valid dummy values
1957-
int dummyPartitionSize = IndexMetadata.INDEX_ROUTING_PARTITION_SIZE_SETTING.get(settings);
1958-
int dummyShards = settings.getAsInt(
1959-
IndexMetadata.SETTING_NUMBER_OF_SHARDS,
1960-
dummyPartitionSize == 1 ? 1 : dummyPartitionSize + 1
1961-
);
1962-
int shardReplicas = settings.getAsInt(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 0);
1963-
1964-
// create index service for parsing and validating "mappings"
1965-
Settings dummySettings = Settings.builder()
1966-
.put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current())
1967-
.put(settings)
1968-
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, dummyShards)
1969-
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, shardReplicas)
1970-
.put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
1971-
.build();
1951+
int dummyPartitionSize = IndexMetadata.INDEX_ROUTING_PARTITION_SIZE_SETTING.get(settings);
1952+
int dummyShards = settings.getAsInt(IndexMetadata.SETTING_NUMBER_OF_SHARDS, dummyPartitionSize == 1 ? 1 : dummyPartitionSize + 1);
1953+
int shardReplicas = settings.getAsInt(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 0);
19721954

1973-
final IndexMetadata tmpIndexMetadata = IndexMetadata.builder(temporaryIndexName).settings(dummySettings).build();
1974-
IndexService dummyIndexService = indicesService.createIndex(tmpIndexMetadata, Collections.emptyList(), false);
1975-
createdIndex = dummyIndexService.index();
1955+
// create index service for parsing and validating "mappings"
1956+
Settings dummySettings = Settings.builder()
1957+
.put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current())
1958+
.put(settings)
1959+
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, dummyShards)
1960+
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, shardReplicas)
1961+
.put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
1962+
.build();
19761963

1964+
final IndexMetadata tmpIndexMetadata = IndexMetadata.builder(temporaryIndexName).settings(dummySettings).build();
1965+
1966+
indicesService.withTempIndexService(tmpIndexMetadata, dummyIndexService -> {
19771967
if (mappings != null) {
19781968
dummyIndexService.mapperService().merge(MapperService.SINGLE_MAPPING_NAME, mappings, MergeReason.INDEX_TEMPLATE);
19791969
}
1980-
1981-
} finally {
1982-
if (createdIndex != null) {
1983-
indicesService.removeIndex(
1984-
createdIndex,
1985-
NO_LONGER_ASSIGNED,
1986-
" created for parsing template mapping",
1987-
CloseUtils.NO_SHARDS_CREATED_EXECUTOR,
1988-
ActionListener.noop()
1989-
);
1990-
}
1991-
}
1970+
return null;
1971+
});
19921972
}
19931973

19941974
private void validate(String name, ComponentTemplate template) {

0 commit comments

Comments
 (0)