Skip to content

Commit ec31471

Browse files
committed
switch map to list
1 parent 76c8eca commit ec31471

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public void validateTransportVersions() throws IOException {
107107
// now load all definitions, do some validation and record them by various keys for later quick lookup
108108
// NOTE: this must run after loading referenced names and existing definitions
109109
// NOTE: this is sorted so that the order of cross validation is deterministic
110-
for (String subDir: List.of("initial", "named")) {
110+
for (String subDir : List.of("initial", "named")) {
111111
try (var definitionsStream = Files.list(definitionsDir.resolve(subDir)).sorted()) {
112112
for (var definitionFile : definitionsStream.toList()) {
113113
recordAndValidateDefinition(readDefinitionFile(definitionFile));

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

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.ArrayList;
2525
import java.util.Collection;
2626
import java.util.Collections;
27-
import java.util.HashMap;
2827
import java.util.List;
2928
import java.util.Map;
3029
import java.util.Objects;
@@ -113,6 +112,7 @@ public static TransportVersion fromBufferedReader(
113112
String component,
114113
String path,
115114
boolean nameInFile,
115+
boolean ignoreName,
116116
BufferedReader bufferedReader,
117117
Integer latest
118118
) {
@@ -128,7 +128,14 @@ public static TransportVersion fromBufferedReader(
128128
if (parts.length < (nameInFile ? 2 : 1)) {
129129
throw new IllegalStateException("invalid transport version file format [" + toComponentPath(component, path) + "]");
130130
}
131-
String name = nameInFile ? parts[0] : path.substring(path.lastIndexOf('/') + 1, path.length() - 4);
131+
String name = null;
132+
if (ignoreName == false) {
133+
if (nameInFile) {
134+
name = path.substring(path.lastIndexOf('/') + 1, path.length() - 4);
135+
} else {
136+
name = parts[0];
137+
}
138+
}
132139
List<Integer> ids = new ArrayList<>();
133140
for (int i = nameInFile ? 1 : 0; i < parts.length; ++i) {
134141
try {
@@ -156,7 +163,7 @@ public static TransportVersion fromBufferedReader(
156163
}
157164
}
158165

159-
public static Map<String, TransportVersion> collectFromInputStreams(
166+
public static List<TransportVersion> collectFromInputStreams(
160167
String component,
161168
Function<String, InputStream> nameToStream,
162169
String latestFileName
@@ -165,35 +172,32 @@ public static Map<String, TransportVersion> collectFromInputStreams(
165172
component,
166173
"/transport/latest/" + latestFileName,
167174
nameToStream,
168-
(c, p, br) -> fromBufferedReader(c, p, true, br, Integer.MAX_VALUE)
175+
(c, p, br) -> fromBufferedReader(c, p, true, false, br, Integer.MAX_VALUE)
169176
);
170177
if (latest != null) {
171-
List<String> versionFilesNames = parseFromBufferedReader(
178+
List<String> versionRelativePaths = parseFromBufferedReader(
172179
component,
173180
"/transport/definitions/manifest.txt",
174181
nameToStream,
175182
(c, p, br) -> br.lines().filter(line -> line.isBlank() == false).toList()
176183
);
177-
if (versionFilesNames != null) {
178-
Map<String, TransportVersion> transportVersions = new HashMap<>();
179-
for (String versionFileName : versionFilesNames) {
184+
if (versionRelativePaths != null) {
185+
List<TransportVersion> transportVersions = new ArrayList<>();
186+
for (String versionRelativePath : versionRelativePaths) {
180187
TransportVersion transportVersion = parseFromBufferedReader(
181188
component,
182-
"/transport/definitions/" + versionFileName,
189+
"/transport/definitions/" + versionRelativePath,
183190
nameToStream,
184-
(c, p, br) -> fromBufferedReader(c, p, false, br, latest.id())
191+
(c, p, br) -> fromBufferedReader(c, p, false, versionRelativePath.startsWith("initial/"), br, latest.id())
185192
);
186193
if (transportVersion != null) {
187-
transportVersions.put(
188-
versionFileName.substring(versionFileName.lastIndexOf("/") + 1, versionFileName.length() - 4),
189-
transportVersion
190-
);
194+
transportVersions.add(transportVersion);
191195
}
192196
}
193197
return transportVersions;
194198
}
195199
}
196-
return Map.of();
200+
return List.of();
197201
}
198202

199203
private static String toComponentPath(String component, String path) {
@@ -422,12 +426,15 @@ private static class VersionsHolder {
422426
static {
423427
// collect all the transport versions from server and es modules/plugins (defined in server)
424428
List<TransportVersion> allVersions = new ArrayList<>(TransportVersions.DEFINED_VERSIONS);
425-
Map<String, TransportVersion> allVersionsByName = collectFromInputStreams(
429+
List<TransportVersion> streamVersions = collectFromInputStreams(
426430
"<server>",
427431
TransportVersion.class::getResourceAsStream,
428432
Version.CURRENT.major + "." + Version.CURRENT.minor + ".csv"
429433
);
430-
addTransportVersions(allVersionsByName.values(), allVersions).sort(TransportVersion::compareTo);
434+
Map<String, TransportVersion> allVersionsByName = streamVersions.stream()
435+
.filter(tv -> tv.name() != null)
436+
.collect(Collectors.toMap(TransportVersion::name, v -> v));
437+
addTransportVersions(streamVersions, allVersions).sort(TransportVersion::compareTo);
431438

432439
// set version lookup by release before adding serverless versions
433440
// serverless versions should not affect release version

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ public void testLatest() {
230230
"<test>",
231231
"/transport/definitions/" + Version.CURRENT.major + "." + Version.CURRENT.minor + ".csv",
232232
TransportVersion.class::getResourceAsStream,
233-
(c, p, br) -> TransportVersion.fromBufferedReader(c, p, true, br, Integer.MAX_VALUE)
233+
(c, p, br) -> TransportVersion.fromBufferedReader(c, p, true, false, br, Integer.MAX_VALUE)
234234
);
235235
// TODO: once placeholder is removed, test the latest known version can be found fromName
236236
// assertThat(latest, is(TransportVersion.fromName(latest.name())));
@@ -242,6 +242,7 @@ public void testSupports() {
242242
"<test>",
243243
"testSupports0",
244244
false,
245+
false,
245246
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data0), StandardCharsets.UTF_8)),
246247
5000000
247248
);
@@ -254,6 +255,7 @@ public void testSupports() {
254255
"<test>",
255256
"testSupports1",
256257
false,
258+
false,
257259
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data1), StandardCharsets.UTF_8)),
258260
5000000
259261
);
@@ -269,6 +271,7 @@ public void testSupports() {
269271
"<test>",
270272
"testSupports2",
271273
false,
274+
false,
272275
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data2), StandardCharsets.UTF_8)),
273276
5000000
274277
);
@@ -296,6 +299,7 @@ public void testSupports() {
296299
"<test>",
297300
"testSupports3",
298301
false,
302+
false,
299303
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data3), StandardCharsets.UTF_8)),
300304
5000000
301305
);
@@ -324,6 +328,7 @@ public void testSupports() {
324328
"<test>",
325329
"testSupports3",
326330
false,
331+
false,
327332
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data4), StandardCharsets.UTF_8)),
328333
5000000
329334
);

0 commit comments

Comments
 (0)