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 e23dce8f05fce..915aca66b421f 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,10 +110,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