Skip to content

Commit 18eef3f

Browse files
committed
Backport mapper test index version propagation fixes
1 parent 2aaa7fb commit 18eef3f

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

test/framework/src/main/java/org/elasticsearch/index/mapper/MapperServiceTestCase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,12 @@ protected final MapperService createMapperService(Settings settings, String mapp
207207
return mapperService;
208208
}
209209

210+
protected final MapperService createMapperService(IndexVersion indexVersion, Settings settings, XContentBuilder mappings)
211+
throws IOException {
212+
MapperService mapperService = createMapperService(indexVersion, settings, () -> true, mappings);
213+
return mapperService;
214+
}
215+
210216
protected final MapperService createMapperService(IndexVersion version, XContentBuilder mapping) throws IOException {
211217
return createMapperService(version, getIndexSettings(), () -> true, mapping);
212218
}

x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/mapper/SemanticTextFieldMapperTests.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.elasticsearch.common.settings.Settings;
3535
import org.elasticsearch.core.CheckedConsumer;
3636
import org.elasticsearch.index.IndexVersion;
37+
import org.elasticsearch.index.IndexVersions;
3738
import org.elasticsearch.index.mapper.DocumentMapper;
3839
import org.elasticsearch.index.mapper.DocumentParsingException;
3940
import org.elasticsearch.index.mapper.FieldMapper;
@@ -62,6 +63,7 @@
6263
import org.elasticsearch.search.LeafNestedDocuments;
6364
import org.elasticsearch.search.NestedDocuments;
6465
import org.elasticsearch.search.SearchHit;
66+
import org.elasticsearch.test.index.IndexVersionUtils;
6567
import org.elasticsearch.xcontent.XContentBuilder;
6668
import org.elasticsearch.xcontent.XContentType;
6769
import org.elasticsearch.xcontent.json.JsonXContent;
@@ -113,14 +115,31 @@ protected Collection<? extends Plugin> getPlugins() {
113115
}
114116

115117
private MapperService createMapperService(XContentBuilder mappings, boolean useLegacyFormat) throws IOException {
118+
IndexVersion indexVersion = SemanticInferenceMetadataFieldsMapperTests.getRandomCompatibleIndexVersion(useLegacyFormat);
119+
return createMapperService(mappings, useLegacyFormat, indexVersion, indexVersion);
120+
}
121+
122+
private MapperService createMapperService(
123+
XContentBuilder mappings,
124+
boolean useLegacyFormat,
125+
IndexVersion minIndexVersion,
126+
IndexVersion maxIndexVersion
127+
) throws IOException {
128+
validateIndexVersion(minIndexVersion, useLegacyFormat);
129+
IndexVersion indexVersion = IndexVersionUtils.randomVersionBetween(random(), minIndexVersion, maxIndexVersion);
116130
var settings = Settings.builder()
117-
.put(
118-
IndexMetadata.SETTING_INDEX_VERSION_CREATED.getKey(),
119-
SemanticInferenceMetadataFieldsMapperTests.getRandomCompatibleIndexVersion(useLegacyFormat)
120-
)
131+
.put(IndexMetadata.SETTING_INDEX_VERSION_CREATED.getKey(), indexVersion)
121132
.put(InferenceMetadataFieldsMapper.USE_LEGACY_SEMANTIC_TEXT_FORMAT.getKey(), useLegacyFormat)
122133
.build();
123-
return createMapperService(settings, mappings);
134+
return createMapperService(indexVersion, settings, mappings);
135+
}
136+
137+
private static void validateIndexVersion(IndexVersion indexVersion, boolean useLegacyFormat) {
138+
if (useLegacyFormat == false
139+
&& indexVersion.before(IndexVersions.INFERENCE_METADATA_FIELDS)
140+
&& indexVersion.between(IndexVersions.INFERENCE_METADATA_FIELDS_BACKPORT, IndexVersions.UPGRADE_TO_LUCENE_10_0_0) == false) {
141+
throw new IllegalArgumentException("Index version " + indexVersion + " does not support new semantic text format");
142+
}
124143
}
125144

126145
@Override

0 commit comments

Comments
 (0)