Skip to content

Commit 02a1e02

Browse files
committed
Save transport version when generating new initial version
When a release is finalized, generateInitialTransportVersion creates a new transport version definition for the next release. In the old transport version system the setCompatibleVersions task would have been called to update TransportVersions.csv with the previous id to save it for lookups from id to release version. This commit adjusts generateInitialTransportVersion to first save the current id into TransportVersions.csv. To accomplish that it needs the release version to map it to, and the current "release version" is renamed to next version. Additionally, the setCompatibleVersions task no longer does anything, so it is removed.
1 parent 32f55a8 commit 02a1e02

File tree

8 files changed

+46
-87
lines changed

8 files changed

+46
-87
lines changed

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,16 @@ class AbstractTransportVersionFuncTest extends AbstractGradleFuncTest {
133133
referableAndReferencedTransportVersion("older_92", "8122000")
134134
referableAndReferencedTransportVersion("existing_92", "8123000,8012001")
135135
unreferableTransportVersion("initial_9.0.0", "8000000")
136+
unreferableTransportVersion("initial_9.1.0", "8011000")
136137
unreferableTransportVersion("initial_8.19.7", "7123001")
137138
transportVersionUpperBound("9.2", "existing_92", "8123000")
138139
transportVersionUpperBound("9.1", "existing_92", "8012001")
139140
transportVersionUpperBound("9.0", "initial_9.0.0", "8000000")
140141
transportVersionUpperBound("8.19", "initial_8.19.7", "7123001")
142+
javaResource("myserver", "org/elasticsearch/TransportVersions.csv", """
143+
9.0.0,8000000
144+
9.1.0,8012001
145+
""")
141146
// a mock version of TransportVersion, just here so we can compile Dummy.java et al
142147
javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """
143148
public static TransportVersion fromName(String name) {

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/GenerateInitialTransportVersionFuncTest.groovy

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class GenerateInitialTransportVersionFuncTest extends AbstractTransportVersionFu
4848

4949
def "setup is valid"() {
5050
when:
51-
def result = runGenerateAndValidateTask("--release-version", "9.0.0").build()
51+
def result = runGenerateAndValidateTask("--release-version", "9.0.0", "--next-version", "9.1.0").build()
5252

5353
then:
5454
assertGenerateAndValidateSuccess(result)
@@ -62,20 +62,18 @@ class GenerateInitialTransportVersionFuncTest extends AbstractTransportVersionFu
6262
versionPropertiesFile.text = versionPropertiesFile.text.replace("9.2.0", "9.3.0")
6363

6464
when:
65-
System.out.println("Running generation initial task")
66-
def result = runGenerateAndValidateTask("--release-version", "9.2.0").build()
67-
System.out.println("Done running generation task")
65+
def result = runGenerateAndValidateTask("--release-version", "9.2.0", "--next-version", "9.3.0").build()
6866

6967
then:
7068
assertGenerateAndValidateSuccess(result)
71-
assertUnreferableDefinition("initial_9.2.0", "8124000")
72-
assertUpperBound("9.2", "initial_9.2.0,8124000")
73-
assertUpperBound("9.3", "initial_9.2.0,8124000")
69+
assertUnreferableDefinition("initial_9.3.0", "8124000")
70+
assertUpperBound("9.2", "existing_92,8123000")
71+
assertUpperBound("9.3", "initial_9.3.0,8124000")
7472
}
7573

7674
def "patch updates existing upper bound"() {
7775
when:
78-
def result = runGenerateAndValidateTask("--release-version", "9.1.2").build()
76+
def result = runGenerateAndValidateTask("--release-version", "9.1.1", "--next-version", "9.1.2").build()
7977

8078
then:
8179
assertGenerateAndValidateSuccess(result)
@@ -85,7 +83,7 @@ class GenerateInitialTransportVersionFuncTest extends AbstractTransportVersionFu
8583

8684
def "cannot create upper bound file for patch"() {
8785
when:
88-
def result = runGenerateTask("--release-version", "9.3.7").buildAndFail()
86+
def result = runGenerateTask("--release-version", "9.3.7", "--next-version", "9.3.7").buildAndFail()
8987

9088
then:
9189
assertGenerateFailure(result, "Missing upper bound 9.3 for release version 9.3.7")

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/AbstractVersionsTask.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@ private static void replaceDefaultJavaParserClassCsm() {
114114

115115
private static final Logger LOGGER = Logging.getLogger(AbstractVersionsTask.class);
116116

117-
static final String TRANSPORT_VERSION_TYPE = "TransportVersion";
118117
static final String INDEX_VERSION_TYPE = "IndexVersion";
119118

120119
static final String SERVER_MODULE_PATH = "server/src/main/java/";
@@ -123,7 +122,6 @@ private static void replaceDefaultJavaParserClassCsm() {
123122
static final String INDEX_VERSIONS_FILE_PATH = SERVER_MODULE_PATH + "org/elasticsearch/index/IndexVersions.java";
124123

125124
static final String SERVER_RESOURCES_PATH = "server/src/main/resources/";
126-
static final String TRANSPORT_VERSIONS_RECORD = SERVER_RESOURCES_PATH + "org/elasticsearch/TransportVersions.csv";
127125
static final String INDEX_VERSIONS_RECORD = SERVER_RESOURCES_PATH + "org/elasticsearch/index/IndexVersions.csv";
128126

129127
final Path rootDir;

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/ReleaseToolsPlugin.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ public void apply(Project project) {
5252

5353
project.getTasks().register("extractCurrentVersions", ExtractCurrentVersionsTask.class);
5454
project.getTasks().register("tagVersions", TagVersionsTask.class);
55-
project.getTasks().register("setCompatibleVersions", SetCompatibleVersionsTask.class, t -> t.setThisVersion(version));
5655
project.getTasks().register("updateBranchesJson", UpdateBranchesJsonTask.class);
5756

5857
final Directory changeLogDirectory = projectDirectory.dir("docs/changelog");

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/SetCompatibleVersionsTask.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/TagVersionsTask.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public void executeTask() throws IOException {
6666

6767
for (var v : versions.entrySet()) {
6868
Path recordFile = switch (v.getKey()) {
69-
case TRANSPORT_VERSION_TYPE -> rootDir.resolve(TRANSPORT_VERSIONS_RECORD);
7069
case INDEX_VERSION_TYPE -> rootDir.resolve(INDEX_VERSIONS_RECORD);
7170
default -> throw new IllegalArgumentException("Unknown version type " + v.getKey());
7271
};
@@ -95,7 +94,7 @@ private static Map<String, Integer> expandV7Version(Map<String, Integer> tagVers
9594
Integer v7Version = tagVersions.get("Version");
9695
if (v7Version == null) return tagVersions;
9796

98-
return Map.of(TRANSPORT_VERSION_TYPE, v7Version, INDEX_VERSION_TYPE, v7Version);
97+
return Map.of(INDEX_VERSION_TYPE, v7Version);
9998
}
10099

101100
private static final Pattern VERSION_LINE = Pattern.compile("(\\d+\\.\\d+\\.\\d+),(\\d+)");

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateInitialTransportVersionTask.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,52 +11,69 @@
1111

1212
import org.elasticsearch.gradle.Version;
1313
import org.gradle.api.DefaultTask;
14+
import org.gradle.api.file.RegularFileProperty;
1415
import org.gradle.api.provider.Property;
1516
import org.gradle.api.services.ServiceReference;
1617
import org.gradle.api.tasks.Input;
18+
import org.gradle.api.tasks.InputFile;
1719
import org.gradle.api.tasks.TaskAction;
1820
import org.gradle.api.tasks.options.Option;
1921

2022
import java.io.IOException;
23+
import java.nio.file.Files;
24+
import java.nio.file.StandardOpenOption;
2125
import java.util.List;
2226

2327
public abstract class GenerateInitialTransportVersionTask extends DefaultTask {
2428

2529
@ServiceReference("transportVersionResources")
2630
abstract Property<TransportVersionResourcesService> getResourceService();
2731

32+
@InputFile
33+
public abstract RegularFileProperty getTransportVersionsFile();
34+
2835
@Input
29-
@Option(option = "release-version", description = "The Elasticsearch release version this transport version will be associated with")
36+
@Option(option = "release-version", description = "The current Elasticsearch version being released")
3037
public abstract Property<String> getReleaseVersion();
3138

39+
@Input
40+
@Option(option = "next-version", description = "The next Elasticsearch release version this transport version will be associated with")
41+
public abstract Property<String> getNextVersion();
42+
3243
@Input
3344
abstract Property<Version> getCurrentVersion();
3445

3546
@TaskAction
3647
public void run() throws IOException {
3748
Version releaseVersion = Version.fromString(getReleaseVersion().get());
38-
String upperBoundName = getUpperBoundName(releaseVersion);
49+
Version nextVersion = Version.fromString(getNextVersion().get());
50+
String baseUpperBoundName = getUpperBoundName(releaseVersion);
3951
TransportVersionResourcesService resources = getResourceService().get();
40-
TransportVersionUpperBound baseUpperBound = resources.getUpperBoundFromGitBase(upperBoundName);
41-
String initialDefinitionName = "initial_" + releaseVersion;
52+
TransportVersionUpperBound baseUpperBound = resources.getUpperBoundFromGitBase(baseUpperBoundName);
53+
String initialDefinitionName = "initial_" + nextVersion;
4254
TransportVersionDefinition existingDefinition = resources.getUnreferableDefinitionFromGitBase(initialDefinitionName);
4355

4456
// This task runs on main and release branches. In release branches we will generate the exact same
4557
// upper bound result because we always look at the base branch (ie upstream/main).
4658
if (existingDefinition == null) {
4759
if (baseUpperBound == null) {
48-
throw new RuntimeException("Missing upper bound " + upperBoundName + " for release version " + releaseVersion);
60+
throw new RuntimeException("Missing upper bound " + baseUpperBoundName + " for release version " + releaseVersion);
4961
}
5062

63+
// Record the current transport version for the release version before creating the new one
64+
int currentTransportVersionId = baseUpperBound.definitionId().complete();
65+
addTransportVersionRecord(releaseVersion, currentTransportVersionId);
66+
5167
// minors increment by 1000 to create a unique base, patches increment by 1 as other patches do
52-
int increment = releaseVersion.getRevision() == 0 ? 1000 : 1;
53-
var id = TransportVersionId.fromInt(baseUpperBound.definitionId().complete() + increment);
68+
int increment = nextVersion.getRevision() == 0 ? 1000 : 1;
69+
var id = TransportVersionId.fromInt(currentTransportVersionId + increment);
5470
var definition = new TransportVersionDefinition(initialDefinitionName, List.of(id), false);
5571
resources.writeDefinition(definition);
72+
String upperBoundName = getUpperBoundName(nextVersion);
5673
var newUpperBound = new TransportVersionUpperBound(upperBoundName, initialDefinitionName, id);
5774
resources.writeUpperBound(newUpperBound);
5875

59-
if (releaseVersion.getRevision() == 0) {
76+
if (nextVersion.getRevision() == 0) {
6077
Version currentVersion = getCurrentVersion().get();
6178
String currentUpperBoundName = getUpperBoundName(currentVersion);
6279
var currentUpperBound = new TransportVersionUpperBound(currentUpperBoundName, initialDefinitionName, id);
@@ -65,6 +82,11 @@ public void run() throws IOException {
6582
}
6683
}
6784

85+
private void addTransportVersionRecord(Version releaseVersion, int transportVersionId) throws IOException {
86+
String newEntry = releaseVersion + "," + transportVersionId + "\n";
87+
Files.writeString(getTransportVersionsFile().getAsFile().get().toPath(), newEntry, StandardOpenOption.APPEND);
88+
}
89+
6890
private String getUpperBoundName(Version version) {
6991
return version.getMajor() + "." + version.getMinor();
7092
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,10 @@ public void apply(Project project) {
120120
var generateInitialTask = project.getTasks()
121121
.register("generateInitialTransportVersion", GenerateInitialTransportVersionTask.class, t -> {
122122
t.setGroup(taskGroup);
123-
t.setDescription("(Re)generates an initial transport version for an Elasticsearch release version");
123+
t.setDescription("Generates an initial transport version for an Elasticsearch release version");
124124
t.getCurrentVersion().set(currentVersion);
125+
t.getTransportVersionsFile()
126+
.set(project.getLayout().getProjectDirectory().file("src/main/resources/org/elasticsearch/TransportVersions.csv"));
125127
});
126128
validateTask.configure(t -> t.mustRunAfter(generateInitialTask));
127129
}

0 commit comments

Comments
 (0)