diff --git a/server/src/main/java/org/elasticsearch/common/settings/Setting.java b/server/src/main/java/org/elasticsearch/common/settings/Setting.java index d4164b474de0b..20c36bb7d5484 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/Setting.java +++ b/server/src/main/java/org/elasticsearch/common/settings/Setting.java @@ -404,7 +404,9 @@ public T getDefault(Settings settings) { * @return true if the setting is present in the given settings instance, otherwise false */ public boolean exists(final Settings settings) { - return settings.keySet().contains(getKey()); + SecureSettings secureSettings = settings.getSecureSettings(); + return settings.keySet().contains(getKey()) && + (secureSettings == null || secureSettings.getSettingNames().contains(getKey()) == false); } /** diff --git a/server/src/test/java/org/elasticsearch/common/settings/SettingTests.java b/server/src/test/java/org/elasticsearch/common/settings/SettingTests.java index b2f73db90f722..5592498e4e810 100644 --- a/server/src/test/java/org/elasticsearch/common/settings/SettingTests.java +++ b/server/src/test/java/org/elasticsearch/common/settings/SettingTests.java @@ -910,6 +910,13 @@ public void testExists() { assertTrue(fooSetting.exists(Settings.builder().put("foo", "bar").build())); } + public void testExistsWithSecure() { + final MockSecureSettings secureSettings = new MockSecureSettings(); + secureSettings.setString("foo", "foo"); + Setting fooSetting = Setting.simpleString("foo", Property.NodeScope); + assertFalse(fooSetting.exists(Settings.builder().setSecureSettings(secureSettings).build())); + } + public void testExistsWithFallback() { final int count = randomIntBetween(1, 16); Setting current = Setting.simpleString("fallback0", Property.NodeScope);