diff --git a/server/src/test/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java b/server/src/test/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java index cd3a5225a35..582ab09a1f8 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java +++ b/server/src/test/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java @@ -75,7 +75,6 @@ import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo; -@ESIntegTestCase.AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/44164") public class ShrinkIndexIT extends ESIntegTestCase { @Override @@ -559,7 +558,8 @@ public class ShrinkIndexIT extends ESIntegTestCase { } public void testShrinkThenSplitWithFailedNode() throws Exception { - internalCluster().ensureAtLeastNumDataNodes(3); + internalCluster().ensureAtLeastNumDataNodes(2); + final String shrinkNode = internalCluster().startDataOnlyNode(); final int shardCount = between(2, 5); prepareCreate("original").setSettings(Settings.builder().put(indexSettings()) @@ -567,8 +567,6 @@ public class ShrinkIndexIT extends ESIntegTestCase { .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, shardCount)).get(); client().admin().indices().prepareFlush("original").get(); ensureGreen(); - final String shrinkNode - = client().admin().cluster().prepareNodesInfo("data:true").clear().get().getNodes().get(0).getNode().getName(); client().admin().indices().prepareUpdateSettings("original") .setSettings(Settings.builder() .put(IndexMetaData.INDEX_ROUTING_REQUIRE_GROUP_SETTING.getConcreteSettingForNamespace("_name").getKey(), shrinkNode) diff --git a/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java b/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java index b923c90fe12..510c4be28e8 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java +++ b/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java @@ -1632,6 +1632,13 @@ public final class InternalTestCluster extends TestCluster { ensureOpen(); NodeAndClient nodeAndClient = getRandomNodeAndClient(nc -> filter.test(nc.node.settings())); if (nodeAndClient != null) { + if (nodeAndClient.nodeAndClientId() < sharedNodesSeeds.length && nodeAndClient.isMasterEligible() && autoManageMasterNodes + && nodes.values().stream() + .filter(NodeAndClient::isMasterEligible) + .filter(n -> n.nodeAndClientId() < sharedNodesSeeds.length) + .count() == 1) { + throw new AssertionError("Tried to stop the only master eligible shared node"); + } logger.info("Closing filtered random node [{}] ", nodeAndClient.name); stopNodesAndClient(nodeAndClient); }