Kaynağa Gözat

Enable validation for version settings (#95874)

This ensures the `index.version.compatibility` option has validation properly applied
Simon Cooper 2 yıl önce
ebeveyn
işleme
9f0f0fc129

+ 6 - 0
docs/changelog/95874.yaml

@@ -0,0 +1,6 @@
+pr: 95874
+summary: Enable validation for `versionSettings`
+area: "Infra/Settings"
+type: bug
+issues:
+ - 95873

+ 1 - 1
server/src/main/java/org/elasticsearch/common/settings/Setting.java

@@ -1278,7 +1278,7 @@ public class Setting<T> implements ToXContentObject {
         Validator<Version> validator,
         Property... properties
     ) {
-        return new Setting<>(key, fallbackSetting, s -> Version.fromId(Integer.parseInt(s)), properties);
+        return new Setting<>(key, fallbackSetting, s -> Version.fromId(Integer.parseInt(s)), validator, properties);
     }
 
     public static Setting<Float> floatSetting(String key, float defaultValue, Property... properties) {

+ 6 - 2
server/src/test/java/org/elasticsearch/cluster/coordination/NodeJoinExecutorTests.java

@@ -189,9 +189,13 @@ public class NodeJoinExecutorTests extends ESTestCase {
     public static Settings.Builder randomCompatibleVersionSettings() {
         Settings.Builder builder = Settings.builder();
         if (randomBoolean()) {
-            builder.put(IndexMetadata.SETTING_VERSION_CREATED, getRandomCompatibleVersion());
+            Version createdVersion = getRandomCompatibleVersion();
+            builder.put(IndexMetadata.SETTING_VERSION_CREATED, createdVersion);
             if (randomBoolean()) {
-                builder.put(IndexMetadata.SETTING_VERSION_COMPATIBILITY, getRandomCompatibleVersion());
+                builder.put(
+                    IndexMetadata.SETTING_VERSION_COMPATIBILITY,
+                    VersionUtils.randomVersionBetween(random(), createdVersion, Version.CURRENT)
+                );
             }
         } else {
             builder.put(IndexMetadata.SETTING_VERSION_CREATED, randomFrom(Version.fromString("5.0.0"), Version.fromString("6.0.0")));