Skip to content

Commit c867f6c

Browse files
authored
[8.15] Fix toReleaseVersion() when called on the current version id (#112242) (#112280)
Also includes fixes in #112284
1 parent dcba839 commit c867f6c

File tree

6 files changed

+22
-8
lines changed

6 files changed

+22
-8
lines changed

docs/changelog/112242.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 112242
2+
summary: Fix toReleaseVersion() when called on the current version id
3+
area: Infra/Core
4+
type: bug
5+
issues: [111900]

server/src/main/java/org/elasticsearch/ReleaseVersions.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class ReleaseVersions {
4141

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

44-
public static IntFunction<String> generateVersionsLookup(Class<?> versionContainer) {
44+
public static IntFunction<String> generateVersionsLookup(Class<?> versionContainer, int current) {
4545
if (USES_VERSIONS == false) return Integer::toString;
4646

4747
try {
@@ -52,6 +52,9 @@ public static IntFunction<String> generateVersionsLookup(Class<?> versionContain
5252
}
5353

5454
NavigableMap<Integer, List<Version>> versions = new TreeMap<>();
55+
// add the current version id, which won't be in the csv
56+
versions.computeIfAbsent(current, k -> new ArrayList<>()).add(Version.CURRENT);
57+
5558
try (BufferedReader reader = new BufferedReader(new InputStreamReader(versionsFile, StandardCharsets.UTF_8))) {
5659
String line;
5760
while ((line = reader.readLine()) != null) {
@@ -121,8 +124,8 @@ private static IntFunction<String> lookupFunction(NavigableMap<Integer, List<Ver
121124
// too hard to guess what version this id might be for using the next version - just use it directly
122125
upperBound = upperRange.getValue().get(0).toString();
123126
} else {
124-
// likely a version created after the last release tagged version - ok
125-
upperBound = "snapshot[" + id + "]";
127+
// a newer version than all we know about? Can't map it...
128+
upperBound = "[" + id + "]";
126129
}
127130
}
128131

server/src/main/java/org/elasticsearch/TransportVersions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ static Collection<TransportVersion> getAllVersions() {
332332
return VERSION_IDS.values();
333333
}
334334

335-
static final IntFunction<String> VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(TransportVersions.class);
335+
static final IntFunction<String> VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(TransportVersions.class, LATEST_DEFINED.id());
336336

337337
// no instance
338338
private TransportVersions() {}

server/src/main/java/org/elasticsearch/index/IndexVersions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ static Collection<IndexVersion> getAllVersions() {
220220
return VERSION_IDS.values();
221221
}
222222

223-
static final IntFunction<String> VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(IndexVersions.class);
223+
static final IntFunction<String> VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(IndexVersions.class, LATEST_DEFINED.id());
224224

225225
// no instance
226226
private IndexVersions() {}

server/src/test/java/org/elasticsearch/ReleaseVersionsTests.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,20 @@
1717
public class ReleaseVersionsTests extends ESTestCase {
1818

1919
public void testReleaseVersions() {
20-
IntFunction<String> versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class);
20+
IntFunction<String> versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class, 23);
2121

2222
assertThat(versions.apply(10), equalTo("8.0.0"));
2323
assertThat(versions.apply(14), equalTo("8.1.0-8.1.1"));
2424
assertThat(versions.apply(21), equalTo("8.2.0"));
2525
assertThat(versions.apply(22), equalTo("8.2.1"));
26+
assertThat(versions.apply(23), equalTo(Version.CURRENT.toString()));
2627
}
2728

2829
public void testReturnsRange() {
29-
IntFunction<String> versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class);
30+
IntFunction<String> versions = ReleaseVersions.generateVersionsLookup(ReleaseVersionsTests.class, 23);
3031

3132
assertThat(versions.apply(17), equalTo("8.1.2-8.2.0"));
3233
assertThat(versions.apply(9), equalTo("0.0.0"));
33-
assertThat(versions.apply(24), equalTo("8.2.2-snapshot[24]"));
34+
assertThat(versions.apply(24), equalTo(new Version(Version.CURRENT.id + 100) + "-[24]"));
3435
}
3536
}

server/src/test/java/org/elasticsearch/TransportVersionTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.regex.Pattern;
2020

2121
import static org.hamcrest.Matchers.containsString;
22+
import static org.hamcrest.Matchers.endsWith;
2223
import static org.hamcrest.Matchers.equalTo;
2324
import static org.hamcrest.Matchers.greaterThan;
2425
import static org.hamcrest.Matchers.is;
@@ -186,6 +187,10 @@ public void testCURRENTIsLatest() {
186187
assertThat(Collections.max(TransportVersions.getAllVersions()), is(TransportVersion.current()));
187188
}
188189

190+
public void testToReleaseVersion() {
191+
assertThat(TransportVersion.current().toReleaseVersion(), endsWith(Version.CURRENT.toString()));
192+
}
193+
189194
public void testToString() {
190195
assertEquals("5000099", TransportVersion.fromId(5_00_00_99).toString());
191196
assertEquals("2030099", TransportVersion.fromId(2_03_00_99).toString());

0 commit comments

Comments
 (0)