Skip to content

Commit ce38dd4

Browse files
committed
Merge remote-tracking branch 'jverwolf/new-tv-logic' into new-tv-logic
2 parents 2e2b792 + c0b7219 commit ce38dd4

File tree

3 files changed

+108
-5
lines changed

3 files changed

+108
-5
lines changed

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

Lines changed: 101 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import org.elasticsearch.xcontent.ConstructingObjectParser;
1313
import org.elasticsearch.xcontent.ParseField;
1414

15+
import java.io.IOException;
16+
import java.io.InputStream;
17+
import java.io.UncheckedIOException;
1518
import java.util.ArrayList;
1619
import java.util.Collections;
1720
import java.util.HashMap;
@@ -48,10 +51,23 @@ public class TransportVersionSet {
4851
PARSER.declareIntArray(ConstructingObjectParser.constructorArg(), VERSIONS);
4952
}
5053

51-
private static final Map<String, TransportVersionSet> TRANSPORT_VERSION_SETS;
54+
private static final Map<String, TransportVersionSet> TRANSPORT_VERSION_SETS = loadTransportVersionSets();
55+
private static final List<TransportVersion> TRANSPORT_VERSIONS = collectTranportVersions();
5256

53-
static {
57+
private static final String MANIFEST_LOCATION = "META-INF/transport-versions-files-manifest.txt";
58+
private static final String METADATA_LOCATION = "org/elasticsearch/transport/";
59+
private static final String LATEST_SUFFIX = "-LATEST.json";
60+
61+
private static Map<String, TransportVersionSet> loadTransportVersionSets() {
5462
Map<String, TransportVersionSet> transportVersionSets = new HashMap<>();
63+
64+
String latestResourceLocation = Version.CURRENT.major + "-" + Version.CURRENT.minor + LATEST_SUFFIX;
65+
try (InputStream inputStream = TransportVersionSet.class.getResourceAsStream(latestResourceLocation)) {
66+
67+
} catch (IOException ioe) {
68+
throw new UncheckedIOException(ioe);
69+
}
70+
5571
// TODO: load
5672
// TODO: TEST ONLY
5773
transportVersionSets.put("ml-inference-custom-service-embedding-type", new TransportVersionSet(
@@ -79,7 +95,18 @@ public class TransportVersionSet {
7995
List.of(new TransportVersion(9114000))
8096
));
8197
// TODO: END TEST ONLY
82-
TRANSPORT_VERSION_SETS = Collections.unmodifiableMap(transportVersionSets);
98+
return Collections.unmodifiableMap(transportVersionSets);
99+
}
100+
101+
private static List<TransportVersion> collectTranportVersions() {
102+
List<TransportVersion> tranportVersions = new ArrayList<>();
103+
for (TransportVersionSet transportVersionSet : TRANSPORT_VERSION_SETS.values()) {
104+
for (TransportVersion transportVersion : transportVersionSet.versions) {
105+
tranportVersions.add(transportVersion);
106+
}
107+
}
108+
tranportVersions.sort(TransportVersion::compareTo);
109+
return tranportVersions;
83110
}
84111

85112
public static TransportVersionSet get(String name) {
@@ -126,4 +153,75 @@ public boolean isCompatible(TransportVersion version) {
126153
public String toString() {
127154
return "TransportVersionSet{" + "name='" + name + '\'' + ", versions=" + versions + '}';
128155
}
156+
157+
// private static TransportVersionSet fromJSONInputStream(InputStream inputStream) throws IOException {
158+
// XContentParser parser = JsonXContent.jsonXContent.createParser(XContentParserConfiguration.EMPTY, inputStream);
159+
// return TransportVersionSet.fromXContent(parser);
160+
// }
161+
//
162+
//
163+
//
164+
//
165+
// static {
166+
// var locallyDefinedVersionSets = loadTransportVersionSets();
167+
// var extendedVersionSets = new ArrayList<TransportVersionSet>(); // TODO add SPI for serverless
168+
//
169+
// var allVersionSets = Stream.concat(
170+
// locallyDefinedVersionSets.stream(),
171+
// extendedVersionSets.stream()
172+
// ).toList();
173+
//
174+
// ALL_VERSIONS_SORTED = allVersionSets.stream().flatMap(tvSet -> tvSet.versions.stream()).sorted().toList();
175+
//
176+
// ALL_VERSIONS_MAP = ALL_VERSIONS_SORTED.stream()
177+
// .collect(Collectors.toUnmodifiableMap(TransportVersion::id, Function.identity()));
178+
//
179+
// ALL_VERSIONS_SETS_MAP = allVersionSets.stream()
180+
// .collect(Collectors.toUnmodifiableMap(TransportVersionSet::name, Function.identity()));
181+
//
182+
// LATEST = getLatestTVSet();
183+
// }
184+
//
185+
// private static TransportVersionSet getLatestTVSet() {
186+
//
187+
// var major = Version.CURRENT.major;
188+
// var minor = Version.CURRENT.minor;
189+
// var fileName = major + "." + minor + "-" + LATEST_SUFFIX;
190+
//
191+
// var path = METADATA_LOCATION + fileName;
192+
// return loadTransportVersionSet(path); // todo, use a different format?
193+
// }
194+
//
195+
// private static List<TransportVersionSet> loadTransportVersionSets() {
196+
// var transportVersionSets = new ArrayList<TransportVersionSet>();
197+
// for (var fileName : loadTransportVersionSetFileNames()) {
198+
// var path = METADATA_LOCATION + fileName;
199+
// transportVersionSets.add(loadTransportVersionSet(path));
200+
// }
201+
// return transportVersionSets;
202+
// }
203+
//
204+
// // TODO will getResourceAsStream work for IntelliJ?
205+
// private static List<String> loadTransportVersionSetFileNames() {
206+
// try (InputStream transportVersionManifest = TransportVersionSet.class.getResourceAsStream(MANIFEST_LOCATION)) {
207+
// BufferedReader reader = new BufferedReader(new InputStreamReader(transportVersionManifest));
208+
// return reader.lines().filter(line -> line.isBlank() == false).toList();
209+
// } catch (IOException e) {
210+
// throw new RuntimeException("Transport version metadata manifest file not found at " + MANIFEST_LOCATION, e);
211+
// }
212+
// }
213+
//
214+
// private static TransportVersionSet loadTransportVersionSet(String path) {
215+
// try (var fileStream = VersionsHolder.class.getResourceAsStream(path)) {
216+
// if (fileStream != null) {
217+
// return TransportVersionSet.fromJSONInputStream(fileStream);
218+
// } else {
219+
// throw new RuntimeException("Input stream is null");
220+
// }
221+
// } catch (IOException e) {
222+
// throw new RuntimeException("Failed to load TransportVersionSet at path: " + path +
223+
// " specified in the manifest file: " + MANIFEST_LOCATION, e);
224+
// }
225+
// }
226+
// }
129227
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,10 @@ public class Version implements VersionId<Version>, ToXContentFragment {
218218
public static final Version V_9_0_4 = new Version(9_00_04_99);
219219
public static final Version V_9_1_0 = new Version(9_01_00_99);
220220
public static final Version V_9_2_0 = new Version(9_02_00_99);
221-
public static final Version CURRENT = V_9_2_0;
221+
public static final Version CURRENT = V_9_2_0; // here
222+
/*
223+
- need to associate current with the appropriate TV
224+
*/
222225

223226
private static final NavigableMap<Integer, Version> VERSION_IDS;
224227
private static final Map<String, Version> VERSION_STRINGS;
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
{
22
"name": "ml-inference-custom-service-embedding-type",
3-
"latest": 9118000
3+
"ids": [
4+
9118000
5+
]
46
}

0 commit comments

Comments
 (0)