Skip to content

Commit bde1a24

Browse files
authored
Update TransportVersion to support a new model (#131488) (#131886)
This change updates `TransportVersion` to support our new model while still allowing the old model to work as well giving us time to migrate.
1 parent 4433c6e commit bde1a24

File tree

14 files changed

+376
-26
lines changed

14 files changed

+376
-26
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
@@ -407,16 +406,6 @@ static TransportVersion def(int id) {
407406
*/
408407
static final List<TransportVersion> DEFINED_VERSIONS = collectAllVersionIdsDefinedInClass(TransportVersions.class);
409408

410-
// the highest transport version constant defined
411-
static final TransportVersion LATEST_DEFINED;
412-
static {
413-
LATEST_DEFINED = DEFINED_VERSIONS.getLast();
414-
415-
// see comment on IDS field
416-
// now we're registered all the transport versions, we can clear the map
417-
IDS = null;
418-
}
419-
420409
public static List<TransportVersion> collectAllVersionIdsDefinedInClass(Class<?> cls) {
421410
Map<Integer, String> versionIdFields = new HashMap<>();
422411
List<TransportVersion> definedTransportVersions = new ArrayList<>();
@@ -458,8 +447,6 @@ public static List<TransportVersion> collectAllVersionIdsDefinedInClass(Class<?>
458447
return List.copyOf(definedTransportVersions);
459448
}
460449

461-
static final IntFunction<String> VERSION_LOOKUP = ReleaseVersions.generateVersionsLookup(TransportVersions.class, LATEST_DEFINED.id());
462-
463450
// no instance
464451
private TransportVersions() {}
465452
}
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: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,4 +220,112 @@ public void testDuplicateConstants() {
220220
previous = next;
221221
}
222222
}
223+
224+
public void testFromName() {
225+
assertThat(TransportVersion.fromName("test_0"), is(new TransportVersion("test_0", 3001000, null)));
226+
assertThat(TransportVersion.fromName("test_1"), is(new TransportVersion("test_1", 3002000, null)));
227+
assertThat(
228+
TransportVersion.fromName("test_2"),
229+
is(
230+
new TransportVersion(
231+
"test_2",
232+
3003000,
233+
new TransportVersion("test_2", 2001001, new TransportVersion("test_2", 1001001, null))
234+
)
235+
)
236+
);
237+
assertThat(
238+
TransportVersion.fromName("test_3"),
239+
is(new TransportVersion("test_3", 3003001, new TransportVersion("test_3", 2001002, null)))
240+
);
241+
assertThat(
242+
TransportVersion.fromName("test_4"),
243+
is(
244+
new TransportVersion(
245+
"test_4",
246+
3003002,
247+
new TransportVersion("test_4", 2001003, new TransportVersion("test_4", 1001002, null))
248+
)
249+
)
250+
);
251+
}
252+
253+
public void testSupports() {
254+
TransportVersion test0 = TransportVersion.fromName("test_0");
255+
assertThat(new TransportVersion(null, 2003000, null).supports(test0), is(false));
256+
assertThat(new TransportVersion(null, 3001000, null).supports(test0), is(true));
257+
assertThat(new TransportVersion(null, 100001001, null).supports(test0), is(true));
258+
259+
TransportVersion test1 = TransportVersion.fromName("test_1");
260+
assertThat(new TransportVersion(null, 2003000, null).supports(test1), is(false));
261+
assertThat(new TransportVersion(null, 3001000, null).supports(test1), is(false));
262+
assertThat(new TransportVersion(null, 3001001, null).supports(test1), is(false));
263+
assertThat(new TransportVersion(null, 3002000, null).supports(test1), is(true));
264+
assertThat(new TransportVersion(null, 100001000, null).supports(test1), is(true));
265+
assertThat(new TransportVersion(null, 100001001, null).supports(test1), is(true));
266+
267+
TransportVersion test2 = TransportVersion.fromName("test_2");
268+
assertThat(new TransportVersion(null, 1001000, null).supports(test2), is(false));
269+
assertThat(new TransportVersion(null, 1001001, null).supports(test2), is(true));
270+
assertThat(new TransportVersion(null, 1001002, null).supports(test2), is(true));
271+
assertThat(new TransportVersion(null, 1002000, null).supports(test2), is(false));
272+
assertThat(new TransportVersion(null, 1002001, null).supports(test2), is(false));
273+
assertThat(new TransportVersion(null, 2001000, null).supports(test2), is(false));
274+
assertThat(new TransportVersion(null, 2001001, null).supports(test2), is(true));
275+
assertThat(new TransportVersion(null, 2001002, null).supports(test2), is(true));
276+
assertThat(new TransportVersion(null, 2003000, null).supports(test2), is(false));
277+
assertThat(new TransportVersion(null, 2003001, null).supports(test2), is(false));
278+
assertThat(new TransportVersion(null, 3001000, null).supports(test2), is(false));
279+
assertThat(new TransportVersion(null, 3001001, null).supports(test2), is(false));
280+
assertThat(new TransportVersion(null, 3003000, null).supports(test2), is(true));
281+
assertThat(new TransportVersion(null, 3003001, null).supports(test2), is(true));
282+
assertThat(new TransportVersion(null, 3003002, null).supports(test2), is(true));
283+
assertThat(new TransportVersion(null, 3003003, null).supports(test2), is(true));
284+
assertThat(new TransportVersion(null, 100001000, null).supports(test2), is(true));
285+
assertThat(new TransportVersion(null, 100001001, null).supports(test2), is(true));
286+
287+
TransportVersion test3 = TransportVersion.fromName("test_3");
288+
assertThat(new TransportVersion(null, 1001001, null).supports(test3), is(false));
289+
assertThat(new TransportVersion(null, 1001002, null).supports(test3), is(false));
290+
assertThat(new TransportVersion(null, 1001003, null).supports(test3), is(false));
291+
assertThat(new TransportVersion(null, 1002001, null).supports(test3), is(false));
292+
assertThat(new TransportVersion(null, 1002002, null).supports(test3), is(false));
293+
assertThat(new TransportVersion(null, 2001001, null).supports(test3), is(false));
294+
assertThat(new TransportVersion(null, 2001002, null).supports(test3), is(true));
295+
assertThat(new TransportVersion(null, 2001003, null).supports(test3), is(true));
296+
assertThat(new TransportVersion(null, 2003000, null).supports(test3), is(false));
297+
assertThat(new TransportVersion(null, 2003001, null).supports(test3), is(false));
298+
assertThat(new TransportVersion(null, 3001000, null).supports(test3), is(false));
299+
assertThat(new TransportVersion(null, 3001001, null).supports(test3), is(false));
300+
assertThat(new TransportVersion(null, 3003000, null).supports(test3), is(false));
301+
assertThat(new TransportVersion(null, 3003001, null).supports(test3), is(true));
302+
assertThat(new TransportVersion(null, 3003002, null).supports(test3), is(true));
303+
assertThat(new TransportVersion(null, 3003003, null).supports(test3), is(true));
304+
assertThat(new TransportVersion(null, 3004000, null).supports(test3), is(true));
305+
assertThat(new TransportVersion(null, 100001000, null).supports(test3), is(true));
306+
assertThat(new TransportVersion(null, 100001001, null).supports(test3), is(true));
307+
308+
TransportVersion test4 = TransportVersion.fromName("test_4");
309+
assertThat(new TransportVersion(null, 1001001, null).supports(test4), is(false));
310+
assertThat(new TransportVersion(null, 1001002, null).supports(test4), is(true));
311+
assertThat(new TransportVersion(null, 1001003, null).supports(test4), is(true));
312+
assertThat(new TransportVersion(null, 1002001, null).supports(test4), is(false));
313+
assertThat(new TransportVersion(null, 1002002, null).supports(test4), is(false));
314+
assertThat(new TransportVersion(null, 1002003, null).supports(test3), is(false));
315+
assertThat(new TransportVersion(null, 2001002, null).supports(test4), is(false));
316+
assertThat(new TransportVersion(null, 2001003, null).supports(test4), is(true));
317+
assertThat(new TransportVersion(null, 2001004, null).supports(test4), is(true));
318+
assertThat(new TransportVersion(null, 2003000, null).supports(test4), is(false));
319+
assertThat(new TransportVersion(null, 2003001, null).supports(test4), is(false));
320+
assertThat(new TransportVersion(null, 3001000, null).supports(test4), is(false));
321+
assertThat(new TransportVersion(null, 3001001, null).supports(test4), is(false));
322+
assertThat(new TransportVersion(null, 3003000, null).supports(test4), is(false));
323+
assertThat(new TransportVersion(null, 3003001, null).supports(test4), is(false));
324+
assertThat(new TransportVersion(null, 3003002, null).supports(test4), is(true));
325+
assertThat(new TransportVersion(null, 3003003, null).supports(test4), is(true));
326+
assertThat(new TransportVersion(null, 3003004, null).supports(test4), is(true));
327+
assertThat(new TransportVersion(null, 3004000, null).supports(test4), is(true));
328+
assertThat(new TransportVersion(null, 100001000, null).supports(test4), is(true));
329+
assertThat(new TransportVersion(null, 100001001, null).supports(test4), is(true));
330+
}
223331
}
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)