From a3a4918fc8eebe402d319dbee857cc50c8832de5 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 18 Aug 2025 12:48:09 -0700 Subject: [PATCH] Rename initial to unreferenced in transport versions (#133082) The concept of "initial" transport version is broader than just the initial ids created for releases. There are several cases where ids were skipped for various reasons. In order to ensure validation can still work (eg density of base ids), this commit broadens the concept to a place we can define any unreferenced transport version. --- ...portVersionManagementPluginFuncTest.groovy | 31 ++++++++++++++----- ...ValidateTransportVersionResourcesTask.java | 11 +++++-- .../initial_elasticsearch_8_18_5.csv | 0 .../initial_elasticsearch_9_0_5.csv | 0 4 files changed, 31 insertions(+), 11 deletions(-) rename server/src/main/resources/transport/{defined => definitions/unreferenced}/initial_elasticsearch_8_18_5.csv (100%) rename server/src/main/resources/transport/{defined => definitions/unreferenced}/initial_elasticsearch_9_0_5.csv (100%) 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..708b16b436050 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 unreferencedTransportVersion(String name, String id) { + javaResource("myserver", "transport/definitions/unreferenced/" + 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") + unreferencedTransportVersion("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,7 +153,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def "references must be defined"() { given: - definedTransportVersion("not_used", "1000000") + namedTransportVersion("not_used", "1000000") when: def result = validateDefinitionsFails() then: @@ -213,7 +218,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def "definitions have primary ids which cannot change"() { given: - definedTransportVersion("existing_92", "8500000") + namedTransportVersion("existing_92", "8500000") when: def result = validateDefinitionsFails() then: @@ -223,7 +228,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { def "cannot change committed ids to a branch"() { given: - definedTransportVersion("existing_92", "8123000,8012002") + namedTransportVersion("existing_92", "8123000,8012002") when: def result = validateDefinitionsFails() then: @@ -298,4 +303,14 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { assertDefinitionsFailure(result, "Transport version definition file " + "[myserver/src/main/resources/transport/defined/patch.csv] has patch version 8015001 as primary id") } + + def "unreferenced directory is optional"() { + given: + file("myserver/src/main/resources/transport/unreferenced/initial_9_0_0.csv").delete() + file("myserver/src/main/resources/transport/unreferenced").deleteDir() + when: + def result = gradleRunner(":myserver:validateTransportVersionDefinitions").build() + then: + result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.SUCCESS + } } 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..a5c8a734a50c8 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 @@ -110,9 +110,14 @@ 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 subDirName : List.of("unreferenced", "named")) { + Path subDir = definitionsDir.resolve(subDirName); + if (Files.isDirectory(subDir)) { + try (var definitionsStream = Files.list(subDir).sorted()) { + for (var definitionFile : definitionsStream.toList()) { + recordAndValidateDefinition(readDefinitionFile(definitionFile)); + } + } } } diff --git a/server/src/main/resources/transport/defined/initial_elasticsearch_8_18_5.csv b/server/src/main/resources/transport/definitions/unreferenced/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/unreferenced/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/unreferenced/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/unreferenced/initial_elasticsearch_9_0_5.csv