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 f592e107a2e3c..7ec4399b4ff94 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/Setting.java +++ b/server/src/main/java/org/elasticsearch/common/settings/Setting.java @@ -166,6 +166,13 @@ public enum Property { */ IndexSettingDeprecatedInV8AndRemovedInV9, + /** + * Indicates that this index-level setting was deprecated in {@link Version#V_9_1_0} and is + * forbidden in indices created from V10 onwards. + * TODO Should be checked in {@link Setting#isDeprecatedAndRemoved} + */ + IndexSettingDeprecatedInV9AndRemovedInV10, + /** * Indicates that this setting is accessible by non-operator users (public) in serverless * Users will be allowed to set and see values of this setting. @@ -188,7 +195,8 @@ public enum Property { Property.Deprecated, Property.DeprecatedWarning, Property.IndexSettingDeprecatedInV7AndRemovedInV8, - Property.IndexSettingDeprecatedInV8AndRemovedInV9 + Property.IndexSettingDeprecatedInV8AndRemovedInV9, + Property.IndexSettingDeprecatedInV9AndRemovedInV10 ); @SuppressWarnings("this-escape") @@ -229,6 +237,7 @@ private Setting( checkPropertyRequiresIndexScope(propertiesAsSet, Property.PrivateIndex); checkPropertyRequiresIndexScope(propertiesAsSet, Property.IndexSettingDeprecatedInV7AndRemovedInV8); checkPropertyRequiresIndexScope(propertiesAsSet, Property.IndexSettingDeprecatedInV8AndRemovedInV9); + checkPropertyRequiresIndexScope(propertiesAsSet, Property.IndexSettingDeprecatedInV9AndRemovedInV10); checkPropertyRequiresNodeScope(propertiesAsSet); this.properties = propertiesAsSet; } @@ -464,7 +473,8 @@ private boolean isDeprecated() { return properties.contains(Property.Deprecated) || properties.contains(Property.DeprecatedWarning) || properties.contains(Property.IndexSettingDeprecatedInV7AndRemovedInV8) - || properties.contains(Property.IndexSettingDeprecatedInV8AndRemovedInV9); + || properties.contains(Property.IndexSettingDeprecatedInV8AndRemovedInV9) + || properties.contains(Property.IndexSettingDeprecatedInV9AndRemovedInV10); } private boolean isDeprecatedWarningOnly() { diff --git a/server/src/main/java/org/elasticsearch/index/MergePolicyConfig.java b/server/src/main/java/org/elasticsearch/index/MergePolicyConfig.java index a7a004ac60b5b..9b507b5800ba1 100644 --- a/server/src/main/java/org/elasticsearch/index/MergePolicyConfig.java +++ b/server/src/main/java/org/elasticsearch/index/MergePolicyConfig.java @@ -236,7 +236,7 @@ MergePolicy getMergePolicy(MergePolicyConfig config, boolean isTimeBasedIndex) { "index.merge.policy.max_merge_at_once_explicit", 30, 2, - Property.Deprecated, // When removing in 9.0 follow the approach of IndexSettingDeprecatedInV7AndRemovedInV8 + Property.IndexSettingDeprecatedInV9AndRemovedInV10, Property.Dynamic, Property.IndexScope ); 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 3b0516df57964..ed99ea6c74d0a 100644 --- a/server/src/test/java/org/elasticsearch/common/settings/SettingTests.java +++ b/server/src/test/java/org/elasticsearch/common/settings/SettingTests.java @@ -1529,6 +1529,19 @@ public void testDeprecationPropertyValidation() { IllegalArgumentException.class, () -> Setting.boolSetting("a.bool.setting", true, Property.DeprecatedWarning, Property.IndexSettingDeprecatedInV8AndRemovedInV9) ); + expectThrows( + IllegalArgumentException.class, + () -> Setting.boolSetting("a.bool.setting", true, Property.Deprecated, Property.IndexSettingDeprecatedInV9AndRemovedInV10) + ); + expectThrows( + IllegalArgumentException.class, + () -> Setting.boolSetting( + "a.bool.setting", + true, + Property.DeprecatedWarning, + Property.IndexSettingDeprecatedInV9AndRemovedInV10 + ) + ); } public void testIntSettingBounds() {