From e9bc684e1da56de681e328194d6b143a3db88c4d Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Fri, 7 Jun 2024 16:39:00 +0200 Subject: [PATCH 1/3] Address MappingIT#testMapperDynamicIndexSetting() test failure This is a 7.17 rolling upgrade test. See the mentioned issue and comment in the test. Closes #109455 --- .../src/test/java/org/elasticsearch/upgrades/MappingIT.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java b/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java index 35b0952b2d713..2b9d0a35ab0d6 100644 --- a/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java +++ b/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java @@ -71,6 +71,12 @@ public void testMapperDynamicIndexSetting() throws IOException { break; case MIXED: case UPGRADED: + // During the upgrade my-index shards may be allocated to not upgraded nodes, these then fail to allocate. + // If allocation fails more than 5 times, allocation is not retried immediately, this reroute triggers allocation + // any failed allocations. So that my-index health will be green. + Request rerouteRequest = new Request("POST", "cluster/reroute"); + rerouteRequest.addParameter("retry_failed", "true"); + assertOK(client().performRequest(rerouteRequest)); ensureGreen("my-index"); break; } From fcb9e13ea0ff65900b472ee02f6f22741aab516c Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Fri, 7 Jun 2024 16:55:24 +0200 Subject: [PATCH 2/3] During upgrade health may be yellow, because due to shard relation on old node the shard can't be allocated due to the bug. --- .../src/test/java/org/elasticsearch/upgrades/MappingIT.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java b/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java index 2b9d0a35ab0d6..3d508aa73a38a 100644 --- a/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java +++ b/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java @@ -70,6 +70,11 @@ public void testMapperDynamicIndexSetting() throws IOException { assertOK(client().performRequest(request)); break; case MIXED: + ensureHealth(r -> { + r.addParameter("wait_for_status", "yellow"); + r.addParameter("wait_for_no_relocating_shards", "true"); + }); + break; case UPGRADED: // During the upgrade my-index shards may be allocated to not upgraded nodes, these then fail to allocate. // If allocation fails more than 5 times, allocation is not retried immediately, this reroute triggers allocation From 8f7eacbdd11df9f4ea70cc4ab2ec3557e83ed268 Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Sat, 8 Jun 2024 13:03:04 +0200 Subject: [PATCH 3/3] Also ensure each node in the cluster has a copy. --- .../src/test/java/org/elasticsearch/upgrades/MappingIT.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java b/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java index 3d508aa73a38a..cfdfd573f2a16 100644 --- a/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java +++ b/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MappingIT.java @@ -60,7 +60,9 @@ public void testMapperDynamicIndexSetting() throws IOException { createIndex("my-index", Settings.EMPTY); Request request = new Request("PUT", "/my-index/_settings"); - request.setJsonEntity(Strings.toString(Settings.builder().put("index.mapper.dynamic", true).build())); + request.setJsonEntity( + Strings.toString(Settings.builder().put("index.mapper.dynamic", true).put("index.number_of_replicas", 2).build()) + ); request.setOptions( expectWarnings( "[index.mapper.dynamic] setting was deprecated in Elasticsearch and will be removed in a future release! "