diff --git a/.gitignore b/.gitignore index cac5a799012e1..b7e999610c149 100644 --- a/.gitignore +++ b/.gitignore @@ -69,7 +69,7 @@ testfixtures_shared/ # Generated checkstyle_ide.xml x-pack/plugin/esql/src/main/generated-src/generated/ -server/src/main/resources/transport/defined/manifest.txt +server/src/main/resources/transport/definitions/manifest.txt # JEnv .java-version diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy index 8eceff86f41fb..18df5a99260cb 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy @@ -42,8 +42,12 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { } } - def definedTransportVersion(String name, String ids) { - javaResource("myserver", "transport/defined/" + name + ".csv", ids) + def namedTransportVersion(String name, String ids) { + javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids) + } + + def initialTransportVersion(String name, String id) { + javaResource("myserver", "transport/definitions/initial/" + name + ".csv", id) } def definedAndUsedTransportVersion(String name, String ids) { @@ -54,7 +58,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { javaSource("myserver", "org.elasticsearch", classname, "", """ static final TransportVersion usage = TransportVersion.fromName("${name}"); """) - definedTransportVersion(name, ids) + namedTransportVersion(name, ids) } def latestTransportVersion(String branch, String name, String id) { @@ -95,8 +99,9 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { apply plugin: 'elasticsearch.transport-version-references' apply plugin: 'elasticsearch.transport-version-resources' """ - definedTransportVersion("existing_91", "8012000") - definedTransportVersion("existing_92", "8123000,8012001") + namedTransportVersion("existing_91", "8012000") + namedTransportVersion("existing_92", "8123000,8012001") + initialTransportVersion("initial_9_0_0", "8000000") latestTransportVersion("9.2", "existing_92", "8123000") latestTransportVersion("9.1", "existing_92", "8012001") // a mock version of TransportVersion, just here so we can compile Dummy.java et al @@ -148,12 +153,12 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def "references must be defined"() { given: - definedTransportVersion("not_used", "1000000") + namedTransportVersion("not_used", "1000000") when: def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/not_used.csv] is not referenced") + "[myserver/src/main/resources/transport/definitions/named/not_used.csv] is not referenced") } def "names must be lowercase alphanum or underscore"() { @@ -163,7 +168,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/${name}.csv] does not have a valid name, " + + "[myserver/src/main/resources/transport/definitions/named/${name}.csv] does not have a valid name, " + "must be lowercase alphanumeric and underscore") where: @@ -177,7 +182,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/empty.csv] does not contain any ids") + "[myserver/src/main/resources/transport/definitions/named/empty.csv] does not contain any ids") } def "definitions have ids in descending order"() { @@ -187,7 +192,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/out_of_order.csv] does not have ordered ids") + "[myserver/src/main/resources/transport/definitions/named/out_of_order.csv] does not have ordered ids") } def "definition ids are unique"() { @@ -197,8 +202,8 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/existing_92.csv] contains id 8123000 already defined in " + - "[myserver/src/main/resources/transport/defined/duplicate.csv]") + "[myserver/src/main/resources/transport/definitions/named/existing_92.csv] contains id 8123000 already defined in " + + "[myserver/src/main/resources/transport/definitions/named/duplicate.csv]") } def "definitions have bwc ids with non-zero patch part"() { @@ -208,27 +213,27 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/patched.csv] contains bwc id [8100000] with a patch part of 0") + "[myserver/src/main/resources/transport/definitions/named/patched.csv] contains bwc id [8100000] with a patch part of 0") } def "definitions have primary ids which cannot change"() { given: - definedTransportVersion("existing_92", "8500000") + namedTransportVersion("existing_92", "8500000") when: def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/existing_92.csv] has modified primary id from 8123000 to 8500000") + "[myserver/src/main/resources/transport/definitions/named/existing_92.csv] has modified primary id from 8123000 to 8500000") } def "cannot change committed ids to a branch"() { given: - definedTransportVersion("existing_92", "8123000,8012002") + namedTransportVersion("existing_92", "8123000,8012002") when: def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/existing_92.csv] modifies existing patch id from 8012001 to 8012002") + "[myserver/src/main/resources/transport/definitions/named/existing_92.csv] modifies existing patch id from 8012001 to 8012002") } def "latest files must reference defined name"() { @@ -249,7 +254,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { then: assertDefinitionsFailure(result, "Latest transport version file " + "[myserver/src/main/resources/transport/latest/9.2.csv] has id 8124000 which is not in definition " + - "[myserver/src/main/resources/transport/defined/existing_92.csv]") + "[myserver/src/main/resources/transport/definitions/named/existing_92.csv]") } def "latest files have latest id within base"() { @@ -296,6 +301,6 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def result = validateDefinitionsFails() then: assertDefinitionsFailure(result, "Transport version definition file " + - "[myserver/src/main/resources/transport/defined/patch.csv] has patch version 8015001 as primary id") + "[myserver/src/main/resources/transport/definitions/named/patch.csv] has patch version 8015001 as primary id") } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java index 1c648b38ce3b0..2ef4e71659d4f 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java @@ -21,8 +21,11 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; public abstract class GenerateTransportVersionManifestTask extends DefaultTask { @InputDirectory @@ -44,15 +47,14 @@ public void generateTransportVersionManifest() throws IOException { } try (var writer = Files.newBufferedWriter(manifestFile)) { - try (var stream = Files.list(definitionsDir)) { - for (String filename : stream.map(p -> p.getFileName().toString()).toList()) { - if (filename.equals(manifestFile.getFileName().toString())) { - // don't list self - continue; - } - writer.write(filename + "\n"); + Files.walkFileTree(definitionsDir, new SimpleFileVisitor<>() { + @Override + public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException { + String subPath = definitionsDir.relativize(path).toString().replace('\\', '/'); + writer.write(subPath + "\n"); + return FileVisitResult.CONTINUE; } - } + }); } } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java index b5b57bbada3d6..eb3ff52fc3921 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java @@ -64,7 +64,7 @@ public void apply(Project project) { t.getManifestFile().set(project.getLayout().getBuildDirectory().file("generated-resources/manifest.txt")); }); project.getTasks().named(JavaPlugin.PROCESS_RESOURCES_TASK_NAME, Copy.class).configure(t -> { - t.into("transport/defined", c -> c.from(generateManifestTask)); + t.into("transport/definitions", c -> c.from(generateManifestTask)); }); } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUtils.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUtils.java index d8fe1ffed147b..0aa2b173d2466 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUtils.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUtils.java @@ -20,7 +20,7 @@ class TransportVersionUtils { static Path definitionFilePath(Directory resourcesDirectory, String name) { - return getDefinitionsDirectory(resourcesDirectory).getAsFile().toPath().resolve(name + ".csv"); + return getDefinitionsDirectory(resourcesDirectory).getAsFile().toPath().resolve("named/" + name + ".csv"); } static Path latestFilePath(Directory resourcesDirectory, String name) { @@ -38,7 +38,7 @@ static TransportVersionLatest readLatestFile(Path file) throws IOException { } static Directory getDefinitionsDirectory(Directory resourcesDirectory) { - return resourcesDirectory.dir("defined"); + return resourcesDirectory.dir("definitions"); } static Directory getLatestDirectory(Directory resourcesDirectory) { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java index 968146c6d6759..2a19900076ec7 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java @@ -45,7 +45,7 @@ public void validateTransportVersions() throws IOException { final Predicate referenceChecker; if (getDefinitionsDirectory().isPresent()) { Path definitionsDir = getDefinitionsDirectory().getAsFile().get().toPath(); - referenceChecker = (name) -> Files.exists(definitionsDir.resolve(name + ".csv")); + referenceChecker = (name) -> Files.exists(definitionsDir.resolve("named/" + name + ".csv")); } else { referenceChecker = (name) -> false; } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java index 8a78e3d1a4353..e23dce8f05fce 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java @@ -96,7 +96,7 @@ public void validateTransportVersions() throws IOException { return; // no definitions to validate, remove this leniency once all branches have at least one version } Path resourcesDir = getResourcesDirectory().getAsFile().get().toPath(); - Path definitionsDir = resourcesDir.resolve("defined"); + Path definitionsDir = resourcesDir.resolve("definitions"); Path latestDir = resourcesDir.resolve("latest"); // first check which resource files already exist in main @@ -110,9 +110,11 @@ public void validateTransportVersions() throws IOException { // now load all definitions, do some validation and record them by various keys for later quick lookup // NOTE: this must run after loading referenced names and existing definitions // NOTE: this is sorted so that the order of cross validation is deterministic - try (var definitionsStream = Files.list(definitionsDir).sorted()) { - for (var definitionFile : definitionsStream.toList()) { - recordAndValidateDefinition(readDefinitionFile(definitionFile)); + for (String subDir : List.of("initial", "named")) { + try (var definitionsStream = Files.list(definitionsDir.resolve(subDir)).sorted()) { + for (var definitionFile : definitionsStream.toList()) { + recordAndValidateDefinition(readDefinitionFile(definitionFile)); + } } } diff --git a/server/src/main/java/org/elasticsearch/TransportVersion.java b/server/src/main/java/org/elasticsearch/TransportVersion.java index a90274496aca6..3cfebd440d2e3 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersion.java +++ b/server/src/main/java/org/elasticsearch/TransportVersion.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -113,6 +112,7 @@ public static TransportVersion fromBufferedReader( String component, String path, boolean nameInFile, + boolean isNamed, BufferedReader bufferedReader, Integer latest ) { @@ -128,7 +128,14 @@ public static TransportVersion fromBufferedReader( if (parts.length < (nameInFile ? 2 : 1)) { throw new IllegalStateException("invalid transport version file format [" + toComponentPath(component, path) + "]"); } - String name = nameInFile ? parts[0] : path.substring(path.lastIndexOf('/') + 1, path.length() - 4); + String name = null; + if (isNamed) { + if (nameInFile) { + name = parts[0]; + } else { + name = path.substring(path.lastIndexOf('/') + 1, path.length() - 4); + } + } List ids = new ArrayList<>(); for (int i = nameInFile ? 1 : 0; i < parts.length; ++i) { try { @@ -156,7 +163,7 @@ public static TransportVersion fromBufferedReader( } } - public static Map collectFromInputStreams( + public static List collectFromInputStreams( String component, Function nameToStream, String latestFileName @@ -165,32 +172,32 @@ public static Map collectFromInputStreams( component, "/transport/latest/" + latestFileName, nameToStream, - (c, p, br) -> fromBufferedReader(c, p, true, br, Integer.MAX_VALUE) + (c, p, br) -> fromBufferedReader(c, p, true, false, br, Integer.MAX_VALUE) ); if (latest != null) { - List versionFilesNames = parseFromBufferedReader( + List versionRelativePaths = parseFromBufferedReader( component, - "/transport/defined/manifest.txt", + "/transport/definitions/manifest.txt", nameToStream, (c, p, br) -> br.lines().filter(line -> line.isBlank() == false).toList() ); - if (versionFilesNames != null) { - Map transportVersions = new HashMap<>(); - for (String versionFileName : versionFilesNames) { + if (versionRelativePaths != null) { + List transportVersions = new ArrayList<>(); + for (String versionRelativePath : versionRelativePaths) { TransportVersion transportVersion = parseFromBufferedReader( component, - "/transport/defined/" + versionFileName, + "/transport/definitions/" + versionRelativePath, nameToStream, - (c, p, br) -> fromBufferedReader(c, p, false, br, latest.id()) + (c, p, br) -> fromBufferedReader(c, p, false, versionRelativePath.startsWith("named/"), br, latest.id()) ); if (transportVersion != null) { - transportVersions.put(versionFileName.substring(0, versionFileName.length() - 4), transportVersion); + transportVersions.add(transportVersion); } } return transportVersions; } } - return Map.of(); + return List.of(); } private static String toComponentPath(String component, String path) { @@ -419,12 +426,15 @@ private static class VersionsHolder { static { // collect all the transport versions from server and es modules/plugins (defined in server) List allVersions = new ArrayList<>(TransportVersions.DEFINED_VERSIONS); - Map allVersionsByName = collectFromInputStreams( + List streamVersions = collectFromInputStreams( "", TransportVersion.class::getResourceAsStream, Version.CURRENT.major + "." + Version.CURRENT.minor + ".csv" ); - addTransportVersions(allVersionsByName.values(), allVersions).sort(TransportVersion::compareTo); + Map allVersionsByName = streamVersions.stream() + .filter(tv -> tv.name() != null) + .collect(Collectors.toMap(TransportVersion::name, v -> v)); + addTransportVersions(streamVersions, allVersions).sort(TransportVersion::compareTo); // set version lookup by release before adding serverless versions // serverless versions should not affect release version diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 6b2738374faed..59f73a9167bad 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -171,7 +171,6 @@ static TransportVersion def(int id) { public static final TransportVersion ESQL_SKIP_ES_INDEX_SERIALIZATION = def(8_827_0_00); public static final TransportVersion ADD_INDEX_BLOCK_TWO_PHASE = def(8_828_0_00); public static final TransportVersion RESOLVE_CLUSTER_NO_INDEX_EXPRESSION = def(8_829_0_00); - public static final TransportVersion ML_ROLLOVER_LEGACY_INDICES = def(8_830_0_00); public static final TransportVersion ADD_INCLUDE_FAILURE_INDICES_OPTION = def(8_831_0_00); public static final TransportVersion ESQL_RESPONSE_PARTIAL = def(8_832_0_00); public static final TransportVersion RANK_DOC_OPTIONAL_METADATA_FOR_EXPLAIN = def(8_833_0_00); diff --git a/server/src/main/resources/transport/defined/initial_elasticsearch_8_18_5.csv b/server/src/main/resources/transport/definitions/initial/initial_elasticsearch_8_18_5.csv similarity index 100% rename from server/src/main/resources/transport/defined/initial_elasticsearch_8_18_5.csv rename to server/src/main/resources/transport/definitions/initial/initial_elasticsearch_8_18_5.csv diff --git a/server/src/main/resources/transport/defined/initial_elasticsearch_9_0_5.csv b/server/src/main/resources/transport/definitions/initial/initial_elasticsearch_9_0_5.csv similarity index 100% rename from server/src/main/resources/transport/defined/initial_elasticsearch_9_0_5.csv rename to server/src/main/resources/transport/definitions/initial/initial_elasticsearch_9_0_5.csv diff --git a/server/src/main/resources/transport/definitions/named/ml_rollover_legacy_indices.csv b/server/src/main/resources/transport/definitions/named/ml_rollover_legacy_indices.csv new file mode 100644 index 0000000000000..2b049c72d4950 --- /dev/null +++ b/server/src/main/resources/transport/definitions/named/ml_rollover_legacy_indices.csv @@ -0,0 +1 @@ +8830000 diff --git a/server/src/test/java/org/elasticsearch/TransportVersionTests.java b/server/src/test/java/org/elasticsearch/TransportVersionTests.java index 1291496d7eaad..b3e2c8604cb1f 100644 --- a/server/src/test/java/org/elasticsearch/TransportVersionTests.java +++ b/server/src/test/java/org/elasticsearch/TransportVersionTests.java @@ -237,9 +237,9 @@ public void testDuplicateConstants() { public void testLatest() { TransportVersion latest = TransportVersion.parseFromBufferedReader( "", - "/transport/defined/" + Version.CURRENT.major + "." + Version.CURRENT.minor + ".csv", + "/transport/definitions/" + Version.CURRENT.major + "." + Version.CURRENT.minor + ".csv", TransportVersion.class::getResourceAsStream, - (c, p, br) -> TransportVersion.fromBufferedReader(c, p, true, br, Integer.MAX_VALUE) + (c, p, br) -> TransportVersion.fromBufferedReader(c, p, true, false, br, Integer.MAX_VALUE) ); // TODO: once placeholder is removed, test the latest known version can be found fromName // assertThat(latest, is(TransportVersion.fromName(latest.name()))); @@ -251,6 +251,7 @@ public void testSupports() { "", "testSupports0", false, + true, new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data0), StandardCharsets.UTF_8)), 5000000 ); @@ -263,6 +264,7 @@ public void testSupports() { "", "testSupports1", false, + true, new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data1), StandardCharsets.UTF_8)), 5000000 ); @@ -278,6 +280,7 @@ public void testSupports() { "", "testSupports2", false, + true, new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data2), StandardCharsets.UTF_8)), 5000000 ); @@ -305,6 +308,7 @@ public void testSupports() { "", "testSupports3", false, + true, new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data3), StandardCharsets.UTF_8)), 5000000 ); @@ -333,6 +337,7 @@ public void testSupports() { "", "testSupports3", false, + true, new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data4), StandardCharsets.UTF_8)), 5000000 ); diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdate.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdate.java index 05bd4eeb48a16..c23a939715b5b 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdate.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdate.java @@ -11,7 +11,6 @@ import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.ResourceAlreadyExistsException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequestBuilder; @@ -53,6 +52,8 @@ public class MlAnomaliesIndexUpdate implements MlAutoUpdateService.UpdateAction private static final Logger logger = LogManager.getLogger(MlAnomaliesIndexUpdate.class); + private static final TransportVersion ML_ROLLOVER_LEGACY_INDICES = TransportVersion.fromName("ml_rollover_legacy_indices"); + private final IndexNameExpressionResolver expressionResolver; private final OriginSettingClient client; @@ -65,7 +66,7 @@ public MlAnomaliesIndexUpdate(IndexNameExpressionResolver expressionResolver, Cl public boolean isMinTransportVersionSupported(TransportVersion minTransportVersion) { // Automatic rollover does not require any new features // but wait for all nodes to be upgraded anyway - return minTransportVersion.onOrAfter(TransportVersions.ML_ROLLOVER_LEGACY_INDICES); + return minTransportVersion.supports(ML_ROLLOVER_LEGACY_INDICES); } @Override diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlIndexRollover.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlIndexRollover.java index c079e5dfde737..03332b5ddca9a 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlIndexRollover.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MlIndexRollover.java @@ -10,7 +10,6 @@ import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.rollover.RolloverRequest; import org.elasticsearch.action.support.IndicesOptions; @@ -44,6 +43,8 @@ public class MlIndexRollover implements MlAutoUpdateService.UpdateAction { private static final Logger logger = LogManager.getLogger(MlIndexRollover.class); + private static final TransportVersion ML_ROLLOVER_LEGACY_INDICES = TransportVersion.fromName("ml_rollover_legacy_indices"); + public record IndexPatternAndAlias(String indexPattern, String alias) {} private final IndexNameExpressionResolver expressionResolver; @@ -60,7 +61,7 @@ public MlIndexRollover(List indicesToRollover, IndexNameEx public boolean isMinTransportVersionSupported(TransportVersion minTransportVersion) { // Wait for all nodes to be upgraded to ensure that the // newly created index will be of the latest version. - return minTransportVersion.onOrAfter(TransportVersions.ML_ROLLOVER_LEGACY_INDICES); + return minTransportVersion.supports(ML_ROLLOVER_LEGACY_INDICES); } @Override