From 91bed1f0f0e36c01ba7b3e6fe5df7c4140add145 Mon Sep 17 00:00:00 2001 From: William Brafford Date: Tue, 8 Mar 2022 16:52:02 -0500 Subject: [PATCH 1/3] Fix an NPE in hidden alias logic --- .../metadata/SystemIndexMetadataUpgradeService.java | 9 +++++++-- .../xpack/restart/FullClusterRestartIT.java | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java b/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java index ac661a8859646..bffe607304b24 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; /** * A service responsible for updating the metadata used by system indices. @@ -106,9 +107,13 @@ public ClusterState execute(ClusterState currentState) throws Exception { builder.settings(Settings.builder().put(indexMetadata.getSettings()).put(IndexMetadata.SETTING_INDEX_HIDDEN, true)); updated = true; } - if (isSystem && indexMetadata.getAliases().values().stream().anyMatch(a -> a.isHidden() == false)) { + if (isSystem + && indexMetadata.getAliases() + .values() + .stream() + .anyMatch(a -> Objects.nonNull(a.isHidden()) && a.isHidden() == false)) { for (AliasMetadata aliasMetadata : indexMetadata.getAliases().values()) { - if (aliasMetadata.isHidden() == false) { + if (Objects.nonNull(aliasMetadata.isHidden()) && aliasMetadata.isHidden() == false) { builder.removeAlias(aliasMetadata.alias()); builder.putAlias( AliasMetadata.builder(aliasMetadata.alias()) diff --git a/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/FullClusterRestartIT.java b/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/FullClusterRestartIT.java index 25b76dda77a93..a7d13b0bb93fd 100644 --- a/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/FullClusterRestartIT.java +++ b/x-pack/qa/full-cluster-restart/src/test/java/org/elasticsearch/xpack/restart/FullClusterRestartIT.java @@ -98,7 +98,6 @@ public void testSingleDoc() throws IOException { assertThat(toStr(client().performRequest(getRequest)), containsString(doc)); } - @AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/81411") public void testSecurityNativeRealm() throws Exception { if (isRunningAgainstOldCluster()) { createUser(true); From 5d007b08608e0de93cf5f6cf26dbb4f0913a3d43 Mon Sep 17 00:00:00 2001 From: William Brafford Date: Tue, 8 Mar 2022 17:03:28 -0500 Subject: [PATCH 2/3] Update docs/changelog/84780.yaml --- docs/changelog/84780.yaml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 docs/changelog/84780.yaml diff --git a/docs/changelog/84780.yaml b/docs/changelog/84780.yaml new file mode 100644 index 0000000000000..899b6d1499ffa --- /dev/null +++ b/docs/changelog/84780.yaml @@ -0,0 +1,7 @@ +pr: 84780 +summary: Fix `NullPointerException` in `SystemIndexMetadataUpgradeService` hidden + alias handling +area: Infra/Core +type: bug +issues: + - 81411 From 081a762ee04ba6a199867469c8f94e5dab7c24de Mon Sep 17 00:00:00 2001 From: William Brafford Date: Wed, 9 Mar 2022 11:20:34 -0500 Subject: [PATCH 3/3] Simplify conditional --- .../metadata/SystemIndexMetadataUpgradeService.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java b/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java index bffe607304b24..f3e20291ccdae 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/SystemIndexMetadataUpgradeService.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Objects; /** * A service responsible for updating the metadata used by system indices. @@ -107,13 +106,9 @@ public ClusterState execute(ClusterState currentState) throws Exception { builder.settings(Settings.builder().put(indexMetadata.getSettings()).put(IndexMetadata.SETTING_INDEX_HIDDEN, true)); updated = true; } - if (isSystem - && indexMetadata.getAliases() - .values() - .stream() - .anyMatch(a -> Objects.nonNull(a.isHidden()) && a.isHidden() == false)) { + if (isSystem && indexMetadata.getAliases().values().stream().anyMatch(a -> Boolean.FALSE.equals(a.isHidden()))) { for (AliasMetadata aliasMetadata : indexMetadata.getAliases().values()) { - if (Objects.nonNull(aliasMetadata.isHidden()) && aliasMetadata.isHidden() == false) { + if (Boolean.FALSE.equals(aliasMetadata.isHidden())) { builder.removeAlias(aliasMetadata.alias()); builder.putAlias( AliasMetadata.builder(aliasMetadata.alias())