From 6b2f56ed372e24f94e35a81f7be83c3c2224ecd1 Mon Sep 17 00:00:00 2001 From: gmarouli Date: Wed, 11 Mar 2026 12:55:19 +0200 Subject: [PATCH 1/8] Add test to catch the deprecation warning escaping --- .../indices/IndicesServiceTests.java | 142 +++++++++++++++++- .../org/elasticsearch/test/ESTestCase.java | 4 + 2 files changed, 145 insertions(+), 1 deletion(-) diff --git a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java index 7009c38dfce7f..7e81352cc1380 100644 --- a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java +++ b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java @@ -8,6 +8,7 @@ */ package org.elasticsearch.indices; +import org.apache.lucene.search.Query; import org.apache.lucene.search.similarities.BM25Similarity; import org.apache.lucene.search.similarities.Similarity; import org.apache.lucene.store.AlreadyClosedException; @@ -30,6 +31,7 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.UUIDs; import org.elasticsearch.common.io.FileSystemUtils; +import org.elasticsearch.common.logging.HeaderWarning; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.EsExecutors; @@ -56,11 +58,18 @@ import org.elasticsearch.index.engine.InternalEngine; import org.elasticsearch.index.engine.InternalEngineFactory; import org.elasticsearch.index.mapper.DocumentMapper; +import org.elasticsearch.index.mapper.DocumentParserContext; +import org.elasticsearch.index.mapper.FieldMapper; +import org.elasticsearch.index.mapper.IndexType; import org.elasticsearch.index.mapper.KeywordFieldMapper; +import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.Mapper; +import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.MapperService; +import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.index.shard.IllegalIndexShardStateException; import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.shard.IndexShardState; @@ -96,6 +105,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount; import static org.hamcrest.Matchers.arrayContainingInAnyOrder; +import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.empty; @@ -194,13 +204,100 @@ public Optional getEngineFactory(final IndexSettings indexSetting } + public static class DeprecatedParameterMapper extends FieldMapper { + + static final String CONTENT_TYPE = "deprecated-param-mapper"; + + private DeprecatedParameterMapper(String simpleName, MappedFieldType mappedFieldType, BuilderParams builderParams) { + super(simpleName, mappedFieldType, builderParams); + } + + @Override + protected void parseCreateField(DocumentParserContext context) {} + + @Override + public Builder getMergeBuilder() { + return new DeprecatedParameterMapper.TypeBuilder(leafName()).init(this); + } + + @Override + protected String contentType() { + return CONTENT_TYPE; + } + + static class TypeBuilder extends FieldMapper.Builder { + + private final Parameter deprecatedParam = Parameter.stringParam( + "deprecated_field", + true, + m -> ((DeprecatedParameterFieldType) m.fieldType()).deprecatedField, + null + ).acceptsNull().deprecated(); + + private final Parameter> meta = Parameter.metaParam(); + + TypeBuilder(String name) { + super(name); + } + + @Override + protected Parameter[] getParameters() { + return new Parameter[] { deprecatedParam, meta }; + } + + @Override + public String contentType() { + return CONTENT_TYPE; + } + + @Override + public FieldMapper build(MapperBuilderContext context) { + return new DeprecatedParameterMapper( + leafName(), + new DeprecatedParameterFieldType(context.buildFullName(leafName()), deprecatedParam.getValue(), meta.getValue()), + builderParams(this, context) + ); + } + } + + static class DeprecatedParameterFieldType extends MappedFieldType { + + private final String deprecatedField; + + DeprecatedParameterFieldType(String name, String deprecatedField, Map meta) { + super(name, IndexType.NONE, false, meta); + this.deprecatedField = deprecatedField; + } + + @Override + public ValueFetcher valueFetcher(SearchExecutionContext context, String format) { + return ValueFetcher.EMPTY; + } + + @Override + public String typeName() { + return CONTENT_TYPE; + } + + @Override + public Query termQuery(Object value, SearchExecutionContext context) { + throw new UnsupportedOperationException(); + } + } + } + public static class TestPlugin extends Plugin implements MapperPlugin { public TestPlugin() {} @Override public Map getMappers() { - return Collections.singletonMap("fake-mapper", KeywordFieldMapper.PARSER); + return Map.of( + "fake-mapper", + KeywordFieldMapper.PARSER, + DeprecatedParameterMapper.CONTENT_TYPE, + new FieldMapper.TypeParser((name, parserContext) -> new DeprecatedParameterMapper.TypeBuilder(name)) + ); } @Override @@ -940,6 +1037,49 @@ public void testMapperServiceForValidationChecksMapping() throws IOException { assertNull(temporaryDocumentMapper); } + /** + * Tests that deprecations warnings do not leak when the mapping is updated + */ + public void testDeprecationsWarningsDoNotEscape() throws IOException { + try { + // We remove the extra test thread context from the warning headers so we can test + // the isolation of the thread pool thread context + HeaderWarning.removeThreadContext(getThreadContext()); + + IndicesService indicesService = getIndicesService(); + IndexMetadata initialIndexMetadata = IndexMetadata.builder("test") + .settings(indexSettings(IndexVersion.current(), randomUUID(), 1, 0)) + .build(); + IndexService indexService = indicesService.createIndex(initialIndexMetadata, List.of(), randomBoolean()); + + IndexMetadata newIndexMetadata = IndexMetadata.builder(initialIndexMetadata) + .mappingVersion(initialIndexMetadata.getMappingVersion() + 1) + .putMapping(""" + { + "_doc":{ + "properties": { + "my-field": { + "type": "deprecated-param-mapper", + "deprecated_field": "someValue" + } + } + } + }""") + .build(); + indexService.updateMapping(initialIndexMetadata, newIndexMetadata); + final List warnings = indexService.getThreadPool().getThreadContext().getResponseHeaders().get("Warning"); + if (warnings != null) { + assertThat( + warnings, + not(contains(containsString("Parameter [deprecated_field] is deprecated and will be removed in a future version"))) + ); + } + } finally { + // Add the test thread context back because the teardown expects it + HeaderWarning.setThreadContext(getThreadContext()); + } + } + private Set resolvedExpressions(String... expressions) { return Arrays.stream(expressions).map(ResolvedExpression::new).collect(Collectors.toSet()); } diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java index 1016dc43d2f73..786561fd3712a 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java @@ -508,6 +508,10 @@ protected void afterIfFailed(List errors) {} /** called after a test is finished, but only if successful */ protected void afterIfSuccessful() throws Exception {} + protected ThreadContext getThreadContext() { + return threadContext; + } + /** * Marks a test suite or a test method that should run without checking for entitlements. */ From 8f8fa1f242805e9ab959d29fdbd142a6d26204ed Mon Sep 17 00:00:00 2001 From: gmarouli Date: Wed, 11 Mar 2026 17:55:57 +0200 Subject: [PATCH 2/8] Isolate thread context when updating the mapping --- .../main/java/org/elasticsearch/index/IndexService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/index/IndexService.java b/server/src/main/java/org/elasticsearch/index/IndexService.java index f47b8fe1cc61c..28155a1ae6026 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexService.java +++ b/server/src/main/java/org/elasticsearch/index/IndexService.java @@ -884,7 +884,12 @@ List getSearchOperationListener() { // pkg private for public void updateMapping(final IndexMetadata currentIndexMetadata, final IndexMetadata newIndexMetadata) { if (mapperService != null) { - mapperService.updateMapping(currentIndexMetadata, newIndexMetadata); + // Mapper service re-parses the mapping here, potentially adding deprecation warning response headers, but we're in the process + // of applying the cluster state and have no way to send these warnings back to the client so we just drop them. We will have + // generated, and sent back, the same headers while handling the request that created this mapping in the first place. + try (var ignored = threadPool.getThreadContext().newStoredContext()) { + mapperService.updateMapping(currentIndexMetadata, newIndexMetadata); + } } } From 8c79aedc1e48498f5b93577c0e406e5bb4411292 Mon Sep 17 00:00:00 2001 From: gmarouli Date: Wed, 11 Mar 2026 17:59:57 +0200 Subject: [PATCH 3/8] Revert extra logging added to debug this issue --- .../index/mapper/FieldMapper.java | 8 ----- .../xpack/esql/qa/mixed/Clusters.java | 4 +-- .../esql/qa/multi_node/FieldExtractorIT.java | 5 +-- .../esql/qa/rest/FieldExtractorTestCase.java | 36 +++++++------------ .../rest-api-spec/test/esql/40_tsdb.yml | 9 ----- 5 files changed, 14 insertions(+), 48 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java index 4d72f2de453da..0144aaee78f42 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java @@ -12,7 +12,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.lucene.index.LeafReaderContext; -import org.elasticsearch.ElasticsearchException; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.TriFunction; @@ -1940,13 +1939,6 @@ public final void parse(String name, MappingParserContext parserContext, Map node.version(oldVersionString, isDetachedVersion)) .withNode(node -> node.version(Version.CURRENT)) .setting("xpack.security.enabled", "false") - .setting("xpack.license.self_generated.type", "trial") - // Remove after https://github.com/elastic/elasticsearch/issues/143884 (only the current version will log the stack trace) - .setting("logger.org.elasticsearch.index.mapper.FieldMapper", "DEBUG"); + .setting("xpack.license.self_generated.type", "trial"); if (supportRetryOnShardFailures(oldVersion) == false) { cluster.setting("cluster.routing.rebalance.enable", "none"); } diff --git a/x-pack/plugin/esql/qa/server/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/multi_node/FieldExtractorIT.java b/x-pack/plugin/esql/qa/server/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/multi_node/FieldExtractorIT.java index d7e9773b1fbb6..7f41a5ee0a666 100644 --- a/x-pack/plugin/esql/qa/server/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/multi_node/FieldExtractorIT.java +++ b/x-pack/plugin/esql/qa/server/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/multi_node/FieldExtractorIT.java @@ -18,10 +18,7 @@ @ThreadLeakFilters(filters = TestClustersThreadFilter.class) public class FieldExtractorIT extends FieldExtractorTestCase { @ClassRule - public static ElasticsearchCluster cluster = Clusters.testCluster( - // Remove after https://github.com/elastic/elasticsearch/issues/143884 - spec -> spec.setting("logger.org.elasticsearch.index.mapper.FieldMapper", "DEBUG") - ); + public static ElasticsearchCluster cluster = Clusters.testCluster(spec -> {}); public FieldExtractorIT(MappedFieldType.FieldExtractPreference preference) { super(preference); diff --git a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/FieldExtractorTestCase.java b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/FieldExtractorTestCase.java index 053f65c12355b..2a527a8c25e21 100644 --- a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/FieldExtractorTestCase.java +++ b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/FieldExtractorTestCase.java @@ -14,7 +14,6 @@ import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.Response; import org.elasticsearch.client.ResponseException; -import org.elasticsearch.client.WarningFailureException; import org.elasticsearch.common.Strings; import org.elasticsearch.common.network.NetworkAddress; import org.elasticsearch.common.settings.Settings; @@ -1412,30 +1411,19 @@ public void testTsIndexConflictingTypes() throws IOException { } } """, null, DEPRECATED_DEFAULT_METRIC_WARNING_HANDLER); - // Remove try-catch after https://github.com/elastic/elasticsearch/issues/143884 - try { - ESRestTestCase.createIndex("metrics-long", settings, """ - "properties": { - "@timestamp": { "type": "date" }, - "metric.name": { - "type": "keyword", - "time_series_dimension": true - }, - "metric.value": { - "type": "long", - "time_series_metric": "gauge" - } - } - """); - } catch (WarningFailureException warningException) { - List warnings = warningException.getResponse().getWarnings(); - if (warnings.stream() - .anyMatch(warning -> warning.equals("Parameter [default_metric] is deprecated and will be removed in a future version"))) { - Map indexMapping = ESRestTestCase.getIndexMapping("metrics-long"); - logger.error("Received warning when creating index [metrics-long] with mapping [{}]", indexMapping); + ESRestTestCase.createIndex("metrics-long", settings, """ + "properties": { + "@timestamp": { "type": "date" }, + "metric.name": { + "type": "keyword", + "time_series_dimension": true + }, + "metric.value": { + "type": "long", + "time_series_metric": "gauge" + } } - throw warningException; - } + """); ESRestTestCase.createIndex("metrics-long_dimension", settings, """ "properties": { "@timestamp": { "type": "date" }, diff --git a/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/esql/40_tsdb.yml b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/esql/40_tsdb.yml index 41bc84b9df3c1..62ed5865a9117 100644 --- a/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/esql/40_tsdb.yml +++ b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/esql/40_tsdb.yml @@ -1,15 +1,6 @@ setup: - requires: test_runner_features: [allowed_warnings_regex, allowed_warnings] - # Remove enabling debug logging after https://github.com/elastic/elasticsearch/issues/143884 - - do: - cluster.put_settings: - body: > - { - "persistent": { - "logger.org.elasticsearch.index.mapper.FieldMapper": "DEBUG" - } - } - do: indices.create: index: test From 9e2ad3c16e6d49c96334192a09ce66789907683b Mon Sep 17 00:00:00 2001 From: Mary Gouseti Date: Wed, 11 Mar 2026 17:32:54 +0100 Subject: [PATCH 4/8] Update docs/changelog/144040.yaml --- docs/changelog/144040.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 docs/changelog/144040.yaml diff --git a/docs/changelog/144040.yaml b/docs/changelog/144040.yaml new file mode 100644 index 0000000000000..e0d2dd322f775 --- /dev/null +++ b/docs/changelog/144040.yaml @@ -0,0 +1,10 @@ +area: Mapping +issues: + - 142544 + - 142964 + - 142410 + - 143884 + - 142477 +pr: 144040 +summary: Drop deprecation warnings when updating a mapping in the cluster state applier +type: bug From c910ddc8d8b051b60b92fadee6653de0e8d082f9 Mon Sep 17 00:00:00 2001 From: gmarouli Date: Thu, 12 Mar 2026 09:19:54 +0200 Subject: [PATCH 5/8] Polish --- .../indices/IndicesServiceTests.java | 65 +++++++++---------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java index 7e81352cc1380..54440f24c1f89 100644 --- a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java +++ b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java @@ -31,7 +31,6 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.UUIDs; import org.elasticsearch.common.io.FileSystemUtils; -import org.elasticsearch.common.logging.HeaderWarning; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.EsExecutors; @@ -1041,43 +1040,39 @@ public void testMapperServiceForValidationChecksMapping() throws IOException { * Tests that deprecations warnings do not leak when the mapping is updated */ public void testDeprecationsWarningsDoNotEscape() throws IOException { - try { - // We remove the extra test thread context from the warning headers so we can test - // the isolation of the thread pool thread context - HeaderWarning.removeThreadContext(getThreadContext()); + IndicesService indicesService = getIndicesService(); + IndexMetadata initialIndexMetadata = IndexMetadata.builder("test") + .settings(indexSettings(IndexVersion.current(), randomUUID(), 1, 0)) + .build(); + IndexService indexService = indicesService.createIndex(initialIndexMetadata, List.of(), randomBoolean()); - IndicesService indicesService = getIndicesService(); - IndexMetadata initialIndexMetadata = IndexMetadata.builder("test") - .settings(indexSettings(IndexVersion.current(), randomUUID(), 1, 0)) - .build(); - IndexService indexService = indicesService.createIndex(initialIndexMetadata, List.of(), randomBoolean()); - - IndexMetadata newIndexMetadata = IndexMetadata.builder(initialIndexMetadata) - .mappingVersion(initialIndexMetadata.getMappingVersion() + 1) - .putMapping(""" - { - "_doc":{ - "properties": { - "my-field": { - "type": "deprecated-param-mapper", - "deprecated_field": "someValue" - } - } + IndexMetadata newIndexMetadata = IndexMetadata.builder(initialIndexMetadata) + .mappingVersion(initialIndexMetadata.getMappingVersion() + 1) + .putMapping(""" + { + "_doc":{ + "properties": { + "my-field": { + "type": "deprecated-param-mapper", + "deprecated_field": "someValue" } - }""") - .build(); - indexService.updateMapping(initialIndexMetadata, newIndexMetadata); - final List warnings = indexService.getThreadPool().getThreadContext().getResponseHeaders().get("Warning"); - if (warnings != null) { - assertThat( - warnings, - not(contains(containsString("Parameter [deprecated_field] is deprecated and will be removed in a future version"))) - ); - } - } finally { - // Add the test thread context back because the teardown expects it - HeaderWarning.setThreadContext(getThreadContext()); + } + } + }""") + .build(); + indexService.updateMapping(initialIndexMetadata, newIndexMetadata); + // This test sets two thread contexts to the HeaderWarning class, the thread context of the ESTestCase and the + // thread pool one, consequently the deprecation warning is added to both. The production code will only have + // the thread pool context, so we test the isolation of this context only. + final List warnings = indexService.getThreadPool().getThreadContext().getResponseHeaders().get("Warning"); + if (warnings != null) { + assertThat( + warnings, + not(contains(containsString("Parameter [deprecated_field] is deprecated and will be removed in a future version"))) + ); } + // For the test's thread context we just handle the expected warning. + assertWarnings("Parameter [deprecated_field] is deprecated and will be removed in a future version"); } private Set resolvedExpressions(String... expressions) { From 8590f57875f09a2df3b7b689cdba96c96b5bcae5 Mon Sep 17 00:00:00 2001 From: gmarouli Date: Thu, 12 Mar 2026 16:33:21 +0200 Subject: [PATCH 6/8] Remove meta parameter from DeprecatedParameterMapper --- .../elasticsearch/indices/IndicesServiceTests.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java index 54440f24c1f89..df8542557bf7c 100644 --- a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java +++ b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java @@ -203,7 +203,7 @@ public Optional getEngineFactory(final IndexSettings indexSetting } - public static class DeprecatedParameterMapper extends FieldMapper { + static class DeprecatedParameterMapper extends FieldMapper { static final String CONTENT_TYPE = "deprecated-param-mapper"; @@ -233,15 +233,13 @@ static class TypeBuilder extends FieldMapper.Builder { null ).acceptsNull().deprecated(); - private final Parameter> meta = Parameter.metaParam(); - TypeBuilder(String name) { super(name); } @Override protected Parameter[] getParameters() { - return new Parameter[] { deprecatedParam, meta }; + return new Parameter[] { deprecatedParam }; } @Override @@ -253,7 +251,7 @@ public String contentType() { public FieldMapper build(MapperBuilderContext context) { return new DeprecatedParameterMapper( leafName(), - new DeprecatedParameterFieldType(context.buildFullName(leafName()), deprecatedParam.getValue(), meta.getValue()), + new DeprecatedParameterFieldType(context.buildFullName(leafName()), deprecatedParam.getValue()), builderParams(this, context) ); } @@ -263,8 +261,8 @@ static class DeprecatedParameterFieldType extends MappedFieldType { private final String deprecatedField; - DeprecatedParameterFieldType(String name, String deprecatedField, Map meta) { - super(name, IndexType.NONE, false, meta); + DeprecatedParameterFieldType(String name, String deprecatedField) { + super(name, IndexType.NONE, false, Map.of()); this.deprecatedField = deprecatedField; } From 4f8fdfc1940acda1b21ee077fa24030f46b0d6bc Mon Sep 17 00:00:00 2001 From: gmarouli Date: Thu, 12 Mar 2026 16:41:43 +0200 Subject: [PATCH 7/8] No need to expose the thread context from ESTestCase --- .../src/main/java/org/elasticsearch/test/ESTestCase.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java index 786561fd3712a..1016dc43d2f73 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java @@ -508,10 +508,6 @@ protected void afterIfFailed(List errors) {} /** called after a test is finished, but only if successful */ protected void afterIfSuccessful() throws Exception {} - protected ThreadContext getThreadContext() { - return threadContext; - } - /** * Marks a test suite or a test method that should run without checking for entitlements. */ From bad18dfcf55649dc17e81275a203542acfc56521 Mon Sep 17 00:00:00 2001 From: gmarouli Date: Thu, 12 Mar 2026 17:02:32 +0200 Subject: [PATCH 8/8] unmute test --- muted-tests.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index 70a239844d732..c0db6b02a8914 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -408,9 +408,6 @@ tests: - class: org.elasticsearch.xpack.esql.qa.single_node.EsqlSpecIT method: test {csv-spec:approximation.Approximate stats with sample} issue: https://github.com/elastic/elasticsearch/issues/144022 -- class: org.elasticsearch.xpack.esql.qa.multi_node.EsqlClientYamlIT - method: test {p0=esql/40_tsdb/to_aggregate_metric_double with multi_values} - issue: https://github.com/elastic/elasticsearch/issues/142964 - class: org.elasticsearch.repositories.azure.AzureBlobContainerRetriesTests method: testWriteBlobWithRetries issue: https://github.com/elastic/elasticsearch/issues/144025