Skip to content

Commit 7f0f329

Browse files
authored
[9.0] Update TransportVersion to support a new model (elastic#131488) (elastic#131887)
* Update `TransportVersion` to support a new model (elastic#131488) This change updates `TransportVersion` to support our new model while still allowing the old model to work as well giving us time to migrate. * fix tests
1 parent 00a0baf commit 7f0f329

File tree

14 files changed

+377
-27
lines changed

14 files changed

+377
-27
lines changed

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

Lines changed: 252 additions & 13 deletions
Large diffs are not rendered by default.

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.Map;
2020
import java.util.Set;
2121
import java.util.TreeSet;
22-
import java.util.function.IntFunction;
2322

2423
/**
2524
* <p>Transport version is used to coordinate compatible wire protocol communication between nodes, at a fine-grained level. This replaces
@@ -276,16 +275,6 @@ static TransportVersion def(int id) {
276275
*/
277276
static final List<TransportVersion> DEFINED_VERSIONS = collectAllVersionIdsDefinedInClass(TransportVersions.class);
278277

279-
// the highest transport version constant defined
280-
static final TransportVersion LATEST_DEFINED;
281-
static {
282-
LATEST_DEFINED = DEFINED_VERSIONS.getLast();
283-
284-
// see comment on IDS field
285-
// now we're registered all the transport versions, we can clear the map
286-
IDS = null;
287-
}
288-
289278
public static List<TransportVersion> collectAllVersionIdsDefinedInClass(Class<?> cls) {
290279
Map<Integer, String> versionIdFields = new HashMap<>();
291280
List<TransportVersion> definedTransportVersions = new ArrayList<>();
@@ -327,8 +316,6 @@ public static List<TransportVersion> collectAllVersionIdsDefinedInClass(Class<?>
327316
return List.copyOf(definedTransportVersions);
328317
}
329318

330-
static final IntFunction<String> VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(TransportVersions.class, LATEST_DEFINED.id());
331-
332319
// no instance
333320
private TransportVersions() {}
334321
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
placeholder,8840007
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
placeholder,8841064
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
placeholder,9000014
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
placeholder,9112003
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
placeholder,9130000

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

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class TransportVersionTests extends ESTestCase {
3434
* If the test fails, there is something wrong with your backport PR.
3535
*/
3636
public void testMaximumAllowedTransportVersion() {
37-
assertThat(TransportVersions.LATEST_DEFINED.isPatchFrom(TransportVersions.INITIAL_ELASTICSEARCH_9_0), is(true));
37+
assertThat(TransportVersion.current().isPatchFrom(TransportVersions.INITIAL_ELASTICSEARCH_9_0), is(true));
3838
}
3939

4040
public void testVersionComparison() {
@@ -229,4 +229,112 @@ public void testDuplicateConstants() {
229229
previous = next;
230230
}
231231
}
232+
233+
public void testFromName() {
234+
assertThat(TransportVersion.fromName("test_0"), is(new TransportVersion("test_0", 3001000, null)));
235+
assertThat(TransportVersion.fromName("test_1"), is(new TransportVersion("test_1", 3002000, null)));
236+
assertThat(
237+
TransportVersion.fromName("test_2"),
238+
is(
239+
new TransportVersion(
240+
"test_2",
241+
3003000,
242+
new TransportVersion("test_2", 2001001, new TransportVersion("test_2", 1001001, null))
243+
)
244+
)
245+
);
246+
assertThat(
247+
TransportVersion.fromName("test_3"),
248+
is(new TransportVersion("test_3", 3003001, new TransportVersion("test_3", 2001002, null)))
249+
);
250+
assertThat(
251+
TransportVersion.fromName("test_4"),
252+
is(
253+
new TransportVersion(
254+
"test_4",
255+
3003002,
256+
new TransportVersion("test_4", 2001003, new TransportVersion("test_4", 1001002, null))
257+
)
258+
)
259+
);
260+
}
261+
262+
public void testSupports() {
263+
TransportVersion test0 = TransportVersion.fromName("test_0");
264+
assertThat(new TransportVersion(null, 2003000, null).supports(test0), is(false));
265+
assertThat(new TransportVersion(null, 3001000, null).supports(test0), is(true));
266+
assertThat(new TransportVersion(null, 100001001, null).supports(test0), is(true));
267+
268+
TransportVersion test1 = TransportVersion.fromName("test_1");
269+
assertThat(new TransportVersion(null, 2003000, null).supports(test1), is(false));
270+
assertThat(new TransportVersion(null, 3001000, null).supports(test1), is(false));
271+
assertThat(new TransportVersion(null, 3001001, null).supports(test1), is(false));
272+
assertThat(new TransportVersion(null, 3002000, null).supports(test1), is(true));
273+
assertThat(new TransportVersion(null, 100001000, null).supports(test1), is(true));
274+
assertThat(new TransportVersion(null, 100001001, null).supports(test1), is(true));
275+
276+
TransportVersion test2 = TransportVersion.fromName("test_2");
277+
assertThat(new TransportVersion(null, 1001000, null).supports(test2), is(false));
278+
assertThat(new TransportVersion(null, 1001001, null).supports(test2), is(true));
279+
assertThat(new TransportVersion(null, 1001002, null).supports(test2), is(true));
280+
assertThat(new TransportVersion(null, 1002000, null).supports(test2), is(false));
281+
assertThat(new TransportVersion(null, 1002001, null).supports(test2), is(false));
282+
assertThat(new TransportVersion(null, 2001000, null).supports(test2), is(false));
283+
assertThat(new TransportVersion(null, 2001001, null).supports(test2), is(true));
284+
assertThat(new TransportVersion(null, 2001002, null).supports(test2), is(true));
285+
assertThat(new TransportVersion(null, 2003000, null).supports(test2), is(false));
286+
assertThat(new TransportVersion(null, 2003001, null).supports(test2), is(false));
287+
assertThat(new TransportVersion(null, 3001000, null).supports(test2), is(false));
288+
assertThat(new TransportVersion(null, 3001001, null).supports(test2), is(false));
289+
assertThat(new TransportVersion(null, 3003000, null).supports(test2), is(true));
290+
assertThat(new TransportVersion(null, 3003001, null).supports(test2), is(true));
291+
assertThat(new TransportVersion(null, 3003002, null).supports(test2), is(true));
292+
assertThat(new TransportVersion(null, 3003003, null).supports(test2), is(true));
293+
assertThat(new TransportVersion(null, 100001000, null).supports(test2), is(true));
294+
assertThat(new TransportVersion(null, 100001001, null).supports(test2), is(true));
295+
296+
TransportVersion test3 = TransportVersion.fromName("test_3");
297+
assertThat(new TransportVersion(null, 1001001, null).supports(test3), is(false));
298+
assertThat(new TransportVersion(null, 1001002, null).supports(test3), is(false));
299+
assertThat(new TransportVersion(null, 1001003, null).supports(test3), is(false));
300+
assertThat(new TransportVersion(null, 1002001, null).supports(test3), is(false));
301+
assertThat(new TransportVersion(null, 1002002, null).supports(test3), is(false));
302+
assertThat(new TransportVersion(null, 2001001, null).supports(test3), is(false));
303+
assertThat(new TransportVersion(null, 2001002, null).supports(test3), is(true));
304+
assertThat(new TransportVersion(null, 2001003, null).supports(test3), is(true));
305+
assertThat(new TransportVersion(null, 2003000, null).supports(test3), is(false));
306+
assertThat(new TransportVersion(null, 2003001, null).supports(test3), is(false));
307+
assertThat(new TransportVersion(null, 3001000, null).supports(test3), is(false));
308+
assertThat(new TransportVersion(null, 3001001, null).supports(test3), is(false));
309+
assertThat(new TransportVersion(null, 3003000, null).supports(test3), is(false));
310+
assertThat(new TransportVersion(null, 3003001, null).supports(test3), is(true));
311+
assertThat(new TransportVersion(null, 3003002, null).supports(test3), is(true));
312+
assertThat(new TransportVersion(null, 3003003, null).supports(test3), is(true));
313+
assertThat(new TransportVersion(null, 3004000, null).supports(test3), is(true));
314+
assertThat(new TransportVersion(null, 100001000, null).supports(test3), is(true));
315+
assertThat(new TransportVersion(null, 100001001, null).supports(test3), is(true));
316+
317+
TransportVersion test4 = TransportVersion.fromName("test_4");
318+
assertThat(new TransportVersion(null, 1001001, null).supports(test4), is(false));
319+
assertThat(new TransportVersion(null, 1001002, null).supports(test4), is(true));
320+
assertThat(new TransportVersion(null, 1001003, null).supports(test4), is(true));
321+
assertThat(new TransportVersion(null, 1002001, null).supports(test4), is(false));
322+
assertThat(new TransportVersion(null, 1002002, null).supports(test4), is(false));
323+
assertThat(new TransportVersion(null, 1002003, null).supports(test3), is(false));
324+
assertThat(new TransportVersion(null, 2001002, null).supports(test4), is(false));
325+
assertThat(new TransportVersion(null, 2001003, null).supports(test4), is(true));
326+
assertThat(new TransportVersion(null, 2001004, null).supports(test4), is(true));
327+
assertThat(new TransportVersion(null, 2003000, null).supports(test4), is(false));
328+
assertThat(new TransportVersion(null, 2003001, null).supports(test4), is(false));
329+
assertThat(new TransportVersion(null, 3001000, null).supports(test4), is(false));
330+
assertThat(new TransportVersion(null, 3001001, null).supports(test4), is(false));
331+
assertThat(new TransportVersion(null, 3003000, null).supports(test4), is(false));
332+
assertThat(new TransportVersion(null, 3003001, null).supports(test4), is(false));
333+
assertThat(new TransportVersion(null, 3003002, null).supports(test4), is(true));
334+
assertThat(new TransportVersion(null, 3003003, null).supports(test4), is(true));
335+
assertThat(new TransportVersion(null, 3003004, null).supports(test4), is(true));
336+
assertThat(new TransportVersion(null, 3004000, null).supports(test4), is(true));
337+
assertThat(new TransportVersion(null, 100001000, null).supports(test4), is(true));
338+
assertThat(new TransportVersion(null, 100001001, null).supports(test4), is(true));
339+
}
232340
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
test_0.csv
2+
test_1.csv
3+
test_2.csv
4+
test_3.csv
5+
test_4.csv
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
100001000,3001000

0 commit comments

Comments
 (0)