diff --git a/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/MlHiddenIndicesFullClusterRestartIT.java b/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/MlHiddenIndicesFullClusterRestartIT.java index ff15b6a428182..274fa7ee40fce 100644 --- a/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/MlHiddenIndicesFullClusterRestartIT.java +++ b/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/MlHiddenIndicesFullClusterRestartIT.java @@ -103,34 +103,41 @@ public void testMlIndicesBecomeHidden() throws Exception { } } } else { - Map indexSettingsMap = contentAsMap(getMlIndicesSettings()); - Map aliasesMap = contentAsMap(getMlAliases()); - - assertThat("Index settings map was: " + indexSettingsMap, indexSettingsMap, is(aMapWithSize(greaterThanOrEqualTo(4)))); - for (Map.Entry e : indexSettingsMap.entrySet()) { - String indexName = e.getKey(); - @SuppressWarnings("unchecked") - Map settings = (Map) e.getValue(); - assertThat(settings, is(notNullValue())); - assertThat( - "Index " + indexName + " expected to be hidden but wasn't, settings = " + settings, - XContentMapValues.extractValue(settings, "settings", "index", "hidden"), - is(equalTo("true")) - ); - } + // The 5 operations in MlInitializationService.makeMlInternalIndicesHidden() run sequentially, so might + // not all be finished when this test runs. The desired state should exist within a few seconds of startup, + // hence the assertBusy(). + assertBusy(() -> { + Map indexSettingsMap = contentAsMap(getMlIndicesSettings()); + Map aliasesMap = contentAsMap(getMlAliases()); - for (Tuple, String> indexAndAlias : EXPECTED_INDEX_ALIAS_PAIRS) { - List indices = indexAndAlias.v1(); - String alias = indexAndAlias.v2(); - assertThat( - indexAndAlias + " expected to be hidden but wasn't, aliasesMap = " + aliasesMap, - indices.stream() - .anyMatch( - index -> Boolean.TRUE.equals(XContentMapValues.extractValue(aliasesMap, index, "aliases", alias, "is_hidden")) - ), - is(true) - ); - } + assertThat("Index settings map was: " + indexSettingsMap, indexSettingsMap, is(aMapWithSize(greaterThanOrEqualTo(4)))); + for (Map.Entry e : indexSettingsMap.entrySet()) { + String indexName = e.getKey(); + @SuppressWarnings("unchecked") + Map settings = (Map) e.getValue(); + assertThat(settings, is(notNullValue())); + assertThat( + "Index " + indexName + " expected to be hidden but wasn't, settings = " + settings, + XContentMapValues.extractValue(settings, "settings", "index", "hidden"), + is(equalTo("true")) + ); + } + + for (Tuple, String> indexAndAlias : EXPECTED_INDEX_ALIAS_PAIRS) { + List indices = indexAndAlias.v1(); + String alias = indexAndAlias.v2(); + assertThat( + indexAndAlias + " expected to be hidden but wasn't, aliasesMap = " + aliasesMap, + indices.stream() + .anyMatch( + index -> Boolean.TRUE.equals( + XContentMapValues.extractValue(aliasesMap, index, "aliases", alias, "is_hidden") + ) + ), + is(true) + ); + } + }); } }