diff --git a/docs/changelog/141539.yaml b/docs/changelog/141539.yaml new file mode 100644 index 0000000000000..c0aa56b5430ef --- /dev/null +++ b/docs/changelog/141539.yaml @@ -0,0 +1,6 @@ +area: Infra/Core +issues: [] +pr: 141539 +summary: Reindexing older indices with percolator fields clears migration assistant + errors +type: bug diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java index 994a530e8aaf5..c94e7afc9cf7d 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java @@ -597,7 +597,8 @@ private ClusterState applyCreateIndexWithTemporaryService( temporaryIndexMeta.getRoutingNumShards(), sourceMetadata, temporaryIndexMeta.isSystem(), - temporaryIndexMeta.getCustomData() + temporaryIndexMeta.getCustomData(), + currentState.getMinTransportVersion() ); } catch (Exception e) { logger.info("failed to build index metadata [{}]", request.index()); @@ -658,7 +659,6 @@ private IndexMetadata buildAndValidateTemporaryIndexMetadata( final IndexMetadata.Builder tmpImdBuilder = IndexMetadata.builder(request.index()); tmpImdBuilder.setRoutingNumShards(routingNumShards); tmpImdBuilder.settings(indexSettings); - tmpImdBuilder.transportVersion(TransportVersion.current()); tmpImdBuilder.system(isSystem); // Set up everything, now locally create the index to see that things are ok, and apply @@ -1524,10 +1524,12 @@ static IndexMetadata buildIndexMetadata( int routingNumShards, @Nullable IndexMetadata sourceMetadata, boolean isSystem, - Map customData + Map customData, + TransportVersion minClusterTransportVersion ) { IndexMetadata.Builder indexMetadataBuilder = createIndexMetadataBuilder(indexName, sourceMetadata, indexSettings, routingNumShards); indexMetadataBuilder.system(isSystem); + indexMetadataBuilder.transportVersion(minClusterTransportVersion); // now, update the mappings with the actual source Map mappingsMetadata = new HashMap<>(); DocumentMapper docMapper = documentMapperSupplier.get(); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java index b733ac9c0fd0f..2742ab78d369b 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java @@ -13,6 +13,7 @@ import org.apache.lucene.util.automaton.RegExp; import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.ResourceAlreadyExistsException; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.alias.Alias; import org.elasticsearch.action.admin.indices.create.CreateIndexClusterStateUpdateRequest; @@ -1404,7 +1405,8 @@ public void testBuildIndexMetadata() { 4, sourceIndexMetadata, false, - Map.of() + Map.of(), + TransportVersion.current() ); assertThat(indexMetadata.getAliases().size(), is(1)); @@ -1412,6 +1414,7 @@ public void testBuildIndexMetadata() { assertThat("The source index primary term must be used", indexMetadata.primaryTerm(0), is(3L)); assertThat(indexMetadata.getTimestampRange(), equalTo(IndexLongFieldRange.NO_SHARDS)); assertThat(indexMetadata.getEventIngestedRange(), equalTo(IndexLongFieldRange.NO_SHARDS)); + assertThat(indexMetadata.getTransportVersion(), equalTo(TransportVersion.current())); } public void testGetIndexNumberOfRoutingShardsWithNullSourceIndex() {