From 6b46c955666d0b701a7ba7fd740bb2afb8f59212 Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Wed, 28 Aug 2024 13:38:23 +0100 Subject: [PATCH 1/3] Fix toReleaseVersion() when called on the current version id (#112242) --- docs/changelog/112242.yaml | 5 +++++ .../src/main/java/org/elasticsearch/ReleaseVersions.java | 9 ++++++--- .../main/java/org/elasticsearch/TransportVersions.java | 2 +- .../main/java/org/elasticsearch/index/IndexVersions.java | 2 +- .../java/org/elasticsearch/ReleaseVersionsTests.java | 7 ++++--- .../java/org/elasticsearch/TransportVersionTests.java | 4 ++++ 6 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 docs/changelog/112242.yaml diff --git a/docs/changelog/112242.yaml b/docs/changelog/112242.yaml new file mode 100644 index 0000000000000..7292a00166de2 --- /dev/null +++ b/docs/changelog/112242.yaml @@ -0,0 +1,5 @@ +pr: 112242 +summary: Fix toReleaseVersion() when called on the current version id +area: Infra/Core +type: bug +issues: [111900] diff --git a/server/src/main/java/org/elasticsearch/ReleaseVersions.java b/server/src/main/java/org/elasticsearch/ReleaseVersions.java index 7b5c8d1d42382..cacdca1c5b528 100644 --- a/server/src/main/java/org/elasticsearch/ReleaseVersions.java +++ b/server/src/main/java/org/elasticsearch/ReleaseVersions.java @@ -41,7 +41,7 @@ public class ReleaseVersions { private static final Pattern VERSION_LINE = Pattern.compile("(\\d+\\.\\d+\\.\\d+),(\\d+)"); - public static IntFunction generateVersionsLookup(Class versionContainer) { + public static IntFunction generateVersionsLookup(Class versionContainer, int current) { if (USES_VERSIONS == false) return Integer::toString; try { @@ -52,6 +52,9 @@ public static IntFunction generateVersionsLookup(Class versionContain } NavigableMap> versions = new TreeMap<>(); + // add the current version id, which won't be in the csv + versions.put(current, List.of(Version.CURRENT)); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(versionsFile, StandardCharsets.UTF_8))) { String line; while ((line = reader.readLine()) != null) { @@ -121,8 +124,8 @@ private static IntFunction lookupFunction(NavigableMap getAllVersions() { return VERSION_IDS.values(); } - static final IntFunction VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(TransportVersions.class); + static final IntFunction VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(TransportVersions.class, LATEST_DEFINED.id()); // no instance private TransportVersions() {} diff --git a/server/src/main/java/org/elasticsearch/index/IndexVersions.java b/server/src/main/java/org/elasticsearch/index/IndexVersions.java index 8bebd390d3440..caa6caae8166f 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexVersions.java +++ b/server/src/main/java/org/elasticsearch/index/IndexVersions.java @@ -220,7 +220,7 @@ static Collection getAllVersions() { return VERSION_IDS.values(); } - static final IntFunction VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(IndexVersions.class); + static final IntFunction VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(IndexVersions.class, LATEST_DEFINED.id()); // no instance private IndexVersions() {} diff --git a/server/src/test/java/org/elasticsearch/ReleaseVersionsTests.java b/server/src/test/java/org/elasticsearch/ReleaseVersionsTests.java index b80e953bd8aea..3b5f5eea57f66 100644 --- a/server/src/test/java/org/elasticsearch/ReleaseVersionsTests.java +++ b/server/src/test/java/org/elasticsearch/ReleaseVersionsTests.java @@ -17,19 +17,20 @@ public class ReleaseVersionsTests extends ESTestCase { public void testReleaseVersions() { - IntFunction versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class); + IntFunction versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class, 23); assertThat(versions.apply(10), equalTo("8.0.0")); assertThat(versions.apply(14), equalTo("8.1.0-8.1.1")); assertThat(versions.apply(21), equalTo("8.2.0")); assertThat(versions.apply(22), equalTo("8.2.1")); + assertThat(versions.apply(23), equalTo(Version.CURRENT.toString())); } public void testReturnsRange() { - IntFunction versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class); + IntFunction versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class, 23); assertThat(versions.apply(17), equalTo("8.1.2-8.2.0")); assertThat(versions.apply(9), equalTo("0.0.0")); - assertThat(versions.apply(24), equalTo("8.2.2-snapshot[24]")); + assertThat(versions.apply(24), equalTo(new Version(Version.CURRENT.id + 100) + "-[24]")); } } diff --git a/server/src/test/java/org/elasticsearch/TransportVersionTests.java b/server/src/test/java/org/elasticsearch/TransportVersionTests.java index 2de973622248b..a3728f20a23d4 100644 --- a/server/src/test/java/org/elasticsearch/TransportVersionTests.java +++ b/server/src/test/java/org/elasticsearch/TransportVersionTests.java @@ -186,6 +186,10 @@ public void testCURRENTIsLatest() { assertThat(Collections.max(TransportVersions.getAllVersions()), is(TransportVersion.current())); } + public void testToReleaseVersion() { + assertThat(TransportVersion.current().toReleaseVersion(), equalTo(Version.CURRENT.toString())); + } + public void testToString() { assertEquals("5000099", TransportVersion.fromId(5_00_00_99).toString()); assertEquals("2030099", TransportVersion.fromId(2_03_00_99).toString()); From 567ea322e75a0aa145ee9d44437a09c140fc7714 Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Wed, 28 Aug 2024 14:04:36 +0100 Subject: [PATCH 2/3] Use a mutable list here --- server/src/main/java/org/elasticsearch/ReleaseVersions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/ReleaseVersions.java b/server/src/main/java/org/elasticsearch/ReleaseVersions.java index cacdca1c5b528..bb90bc79a528a 100644 --- a/server/src/main/java/org/elasticsearch/ReleaseVersions.java +++ b/server/src/main/java/org/elasticsearch/ReleaseVersions.java @@ -53,7 +53,7 @@ public static IntFunction generateVersionsLookup(Class versionContain NavigableMap> versions = new TreeMap<>(); // add the current version id, which won't be in the csv - versions.put(current, List.of(Version.CURRENT)); + versions.computeIfAbsent(current, k -> new ArrayList<>()).add(Version.CURRENT); try (BufferedReader reader = new BufferedReader(new InputStreamReader(versionsFile, StandardCharsets.UTF_8))) { String line; From d30012404142f541aaa52bcecb33be921e008e25 Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Wed, 28 Aug 2024 14:35:18 +0100 Subject: [PATCH 3/3] Fix test --- .../src/test/java/org/elasticsearch/TransportVersionTests.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/test/java/org/elasticsearch/TransportVersionTests.java b/server/src/test/java/org/elasticsearch/TransportVersionTests.java index a3728f20a23d4..8cc0875fb9f38 100644 --- a/server/src/test/java/org/elasticsearch/TransportVersionTests.java +++ b/server/src/test/java/org/elasticsearch/TransportVersionTests.java @@ -19,6 +19,7 @@ import java.util.regex.Pattern; import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.endsWith; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; @@ -187,7 +188,7 @@ public void testCURRENTIsLatest() { } public void testToReleaseVersion() { - assertThat(TransportVersion.current().toReleaseVersion(), equalTo(Version.CURRENT.toString())); + assertThat(TransportVersion.current().toReleaseVersion(), endsWith(Version.CURRENT.toString())); } public void testToString() {