From dc351b9c6519149e599d848592365c6a5f442081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Fred=C3=A9n?= <109296772+jfreden@users.noreply.github.com> Date: Fri, 28 Nov 2025 09:47:13 +0100 Subject: [PATCH 1/2] Fix testRoleMigration race condition (#138742) --- .../SecurityIndexRolesMetadataMigrationIT.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/SecurityIndexRolesMetadataMigrationIT.java b/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/SecurityIndexRolesMetadataMigrationIT.java index afec1812baaa7..5bc332efc07b5 100644 --- a/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/SecurityIndexRolesMetadataMigrationIT.java +++ b/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/SecurityIndexRolesMetadataMigrationIT.java @@ -54,8 +54,9 @@ public void testRoleMigration() throws Exception { assertMigratedDocInSecurityIndex(mixed1TestRole, "meta", "test"); assertMigratedDocInSecurityIndex(mixed2TestRole, "meta", "test"); assertMigratedDocInSecurityIndex(upgradedTestRole, "meta", "test"); - // queries all roles by metadata - assertAllRoles(client(), "mixed1-test-role", "mixed2-test-role", "old-test-role", "upgraded-test-role"); + // query all roles by metadata - use assertBusy to handle the case where the node handling the query is not yet aware of the + // successful migration + assertBusy(() -> assertAllRoles(client(), "mixed1-test-role", "mixed2-test-role", "old-test-role", "upgraded-test-role")); } } @@ -175,7 +176,13 @@ private void assertAllRoles(RestClient client, String... roleNames) throws IOExc {"query":{"bool":{"must":[{"exists":{"field":"metadata.meta"}}]}},"sort":["name"]}"""; Request request = new Request(randomFrom("POST", "GET"), "/_security/_query/role"); request.setJsonEntity(metadataQuery); - Response response = client.performRequest(request); + Response response = null; + try { + response = client.performRequest(request); + } catch (ResponseException e) { + fail(e); + } + assertNotNull(response); assertOK(response); Map responseMap = responseAsMap(response); assertThat(responseMap.get("total"), is(roleNames.length)); From eecbc16a902798e5df0497823a35061367a0a260 Mon Sep 17 00:00:00 2001 From: Johannes Freden Jansson Date: Fri, 28 Nov 2025 09:49:45 +0100 Subject: [PATCH 2/2] Remove mute --- muted-tests.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index 8382e7c81556b..e4b251b5dc80d 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -377,9 +377,6 @@ tests: - class: org.elasticsearch.threadpool.ThreadPoolTests method: testDetailedUtilizationMetric issue: https://github.com/elastic/elasticsearch/issues/138242 -- class: org.elasticsearch.upgrades.SecurityIndexRolesMetadataMigrationIT - method: testRoleMigration - issue: https://github.com/elastic/elasticsearch/issues/138731 # Examples: #