Fixing race condition in DynamicMappingIT when checking for updates in mappings (#129931)

This commit is contained in:
Panagiotis Bailis 2025-06-24 19:31:09 +03:00 committed by GitHub
parent 7249ac4d42
commit 07f65e978a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 31 additions and 21 deletions

View file

@ -565,9 +565,6 @@ tests:
- class: org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapperTests
method: testExistsQueryMinimalMapping
issue: https://github.com/elastic/elasticsearch/issues/129911
- class: org.elasticsearch.index.mapper.DynamicMappingIT
method: testDenseVectorDynamicMapping
issue: https://github.com/elastic/elasticsearch/issues/129928
# Examples:
#

View file

@ -920,19 +920,27 @@ public class DynamicMappingIT extends ESIntegTestCase {
client().index(
new IndexRequest("test").source("vector_int8", Randomness.get().doubles(BBQ_DIMS_DEFAULT_THRESHOLD - 1, 0.0, 5.0).toArray())
.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
).get();
client().index(
new IndexRequest("test").source("vector_bbq", Randomness.get().doubles(BBQ_DIMS_DEFAULT_THRESHOLD, 0.0, 5.0).toArray())
.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
).get();
Map<String, Object> mappings = indicesAdmin().prepareGetMappings(TEST_REQUEST_TIMEOUT, "test")
.get()
.mappings()
.get("test")
.sourceAsMap();
assertTrue(new WriteField("properties.vector_int8", () -> mappings).exists());
assertTrue(new WriteField("properties.vector_int8.index_options.type", () -> mappings).get(null).toString().equals("int8_hnsw"));
assertTrue(new WriteField("properties.vector_bbq", () -> mappings).exists());
assertTrue(new WriteField("properties.vector_bbq.index_options.type", () -> mappings).get(null).toString().equals("bbq_hnsw"));
assertBusy(() -> {
Map<String, Object> mappings = indicesAdmin().prepareGetMappings(TEST_REQUEST_TIMEOUT, "test")
.get()
.mappings()
.get("test")
.sourceAsMap();
assertTrue(new WriteField("properties.vector_int8", () -> mappings).exists());
assertTrue(
new WriteField("properties.vector_int8.index_options.type", () -> mappings).get(null).toString().equals("int8_hnsw")
);
assertTrue(new WriteField("properties.vector_bbq", () -> mappings).exists());
assertTrue(new WriteField("properties.vector_bbq.index_options.type", () -> mappings).get(null).toString().equals("bbq_hnsw"));
});
}
public void testBBQDynamicMappingWhenFirstIngestingDoc() throws Exception {
@ -954,14 +962,19 @@ public class DynamicMappingIT extends ESIntegTestCase {
assertTrue(new WriteField("properties.vector", () -> mappings).exists());
assertFalse(new WriteField("properties.vector.index_options.type", () -> mappings).exists());
client().index(new IndexRequest("test").source("vector", Randomness.get().doubles(BBQ_DIMS_DEFAULT_THRESHOLD, 0.0, 5.0).toArray()))
.get();
Map<String, Object> updatedMappings = indicesAdmin().prepareGetMappings(TEST_REQUEST_TIMEOUT, "test")
.get()
.mappings()
.get("test")
.sourceAsMap();
assertTrue(new WriteField("properties.vector", () -> updatedMappings).exists());
assertTrue(new WriteField("properties.vector.index_options.type", () -> updatedMappings).get(null).toString().equals("bbq_hnsw"));
client().index(
new IndexRequest("test").source("vector", Randomness.get().doubles(BBQ_DIMS_DEFAULT_THRESHOLD, 0.0, 5.0).toArray())
.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
).get();
assertBusy(() -> {
Map<String, Object> updatedMappings = indicesAdmin().prepareGetMappings(TEST_REQUEST_TIMEOUT, "test")
.get()
.mappings()
.get("test")
.sourceAsMap();
assertTrue(new WriteField("properties.vector", () -> updatedMappings).exists());
assertTrue(new WriteField("properties.vector.index_options.type", () -> updatedMappings).get("").toString().equals("bbq_hnsw"));
});
}
}