From 9c3cc1644114b72fe2464c262da9bcbb41049f42 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. --- ...ansportVersionManagementPluginFuncTest.groovy | 16 +++++++++++++--- .../ValidateTransportVersionResourcesTask.java | 11 +++++++---- .../initial_elasticsearch_8_18_5.csv | 0 .../initial_elasticsearch_9_0_5.csv | 0 4 files changed, 20 insertions(+), 7 deletions(-) rename server/src/main/resources/transport/definitions/{initial => unreferenced}/initial_elasticsearch_8_18_5.csv (100%) rename server/src/main/resources/transport/definitions/{initial => 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 18df5a99260cb..f74639bf7d841 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 @@ -46,8 +46,8 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids) } - def initialTransportVersion(String name, String id) { - javaResource("myserver", "transport/definitions/initial/" + name + ".csv", id) + def unreferencedTransportVersion(String name, String id) { + javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id) } def definedAndUsedTransportVersion(String name, String ids) { @@ -101,7 +101,7 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { """ namedTransportVersion("existing_91", "8012000") namedTransportVersion("existing_92", "8123000,8012001") - initialTransportVersion("initial_9_0_0", "8000000") + 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 @@ -303,4 +303,14 @@ class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { assertDefinitionsFailure(result, "Transport version definition file " + "[myserver/src/main/resources/transport/definitions/named/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 7e99720a6d76e..ee14880719ae1 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 @@ -107,10 +107,13 @@ 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 - for (String subDir : List.of("initial", "named")) { - try (var definitionsStream = Files.list(definitionsDir.resolve(subDir)).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/definitions/initial/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/definitions/initial/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/definitions/initial/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/definitions/initial/initial_elasticsearch_9_0_5.csv rename to server/src/main/resources/transport/definitions/unreferenced/initial_elasticsearch_9_0_5.csv