Skip to content

Commit 3d11f42

Browse files
authored
Add transport version to main response (#96900)
The root endpoint for Elasticsearch contains diagnostic information about what Elasticsearch is running. This commit adds TransportVersion to this diagnostic information, alongside the existing version information.
1 parent 32bdd3b commit 3d11f42

File tree

7 files changed

+61
-14
lines changed

7 files changed

+61
-14
lines changed

docs/reference/setup/install/check-running.asciidoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ GET /
4141
"build_snapshot" : false,
4242
"lucene_version" : "{lucene_version}",
4343
"minimum_wire_compatibility_version" : "1.2.3",
44-
"minimum_index_compatibility_version" : "1.2.3"
44+
"minimum_index_compatibility_version" : "1.2.3",
45+
"transport_version" : "123456"
4546
},
4647
"tagline" : "You Know, for Search"
4748
}
@@ -54,4 +55,5 @@ GET /
5455
// TESTRESPONSE[s/"build_snapshot" : false,/"build_snapshot" : $body.version.build_snapshot,/]
5556
// TESTRESPONSE[s/"minimum_wire_compatibility_version" : "1.2.3"/"minimum_wire_compatibility_version" : $body.version.minimum_wire_compatibility_version/]
5657
// TESTRESPONSE[s/"minimum_index_compatibility_version" : "1.2.3"/"minimum_index_compatibility_version" : $body.version.minimum_index_compatibility_version/]
58+
// TESTRESPONSE[s/"transport_version" : "123456"/"transport_version" : $body.version.transport_version/]
5759
// So much s/// but at least we test that the layout is close to matching....

modules/rest-root/src/main/java/org/elasticsearch/rest/root/MainResponse.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package org.elasticsearch.rest.root;
1010

1111
import org.elasticsearch.Build;
12+
import org.elasticsearch.TransportVersion;
1213
import org.elasticsearch.Version;
1314
import org.elasticsearch.action.ActionResponse;
1415
import org.elasticsearch.cluster.ClusterName;
@@ -27,6 +28,7 @@ public class MainResponse extends ActionResponse implements ToXContentObject {
2728

2829
private String nodeName;
2930
private Version version;
31+
private TransportVersion transportVersion;
3032
private ClusterName clusterName;
3133
private String clusterUuid;
3234
private Build build;
@@ -37,14 +39,23 @@ public class MainResponse extends ActionResponse implements ToXContentObject {
3739
super(in);
3840
nodeName = in.readString();
3941
version = Version.readVersion(in);
42+
transportVersion = in.getTransportVersion().onOrAfter(TransportVersion.V_8_500_014) ? TransportVersion.readVersion(in) : null;
4043
clusterName = new ClusterName(in);
4144
clusterUuid = in.readString();
4245
build = Build.readBuild(in);
4346
}
4447

45-
public MainResponse(String nodeName, Version version, ClusterName clusterName, String clusterUuid, Build build) {
48+
public MainResponse(
49+
String nodeName,
50+
Version version,
51+
TransportVersion transportVersion,
52+
ClusterName clusterName,
53+
String clusterUuid,
54+
Build build
55+
) {
4656
this.nodeName = nodeName;
4757
this.version = version;
58+
this.transportVersion = transportVersion;
4859
this.clusterName = clusterName;
4960
this.clusterUuid = clusterUuid;
5061
this.build = build;
@@ -58,6 +69,10 @@ public Version getVersion() {
5869
return version;
5970
}
6071

72+
public TransportVersion getTransportVersion() {
73+
return transportVersion;
74+
}
75+
6176
public ClusterName getClusterName() {
6277
return clusterName;
6378
}
@@ -74,6 +89,9 @@ public Build getBuild() {
7489
public void writeTo(StreamOutput out) throws IOException {
7590
out.writeString(nodeName);
7691
Version.writeVersion(version, out);
92+
if (out.getTransportVersion().onOrAfter(TransportVersion.V_8_500_014)) {
93+
TransportVersion.writeVersion(transportVersion, out);
94+
}
7795
clusterName.writeTo(out);
7896
out.writeString(clusterUuid);
7997
Build.writeBuild(build, out);
@@ -95,6 +113,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
95113
.field("lucene_version", version.luceneVersion().toString())
96114
.field("minimum_wire_compatibility_version", version.minimumCompatibilityVersion().toString())
97115
.field("minimum_index_compatibility_version", version.minimumIndexCompatibilityVersion().toString())
116+
.field("transport_version", transportVersion.toString())
98117
.endObject();
99118
builder.field("tagline", "You Know, for Search");
100119
builder.endObject();
@@ -128,6 +147,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
128147
response.version = Version.fromString(
129148
((String) value.get("number")).replace("-SNAPSHOT", "").replaceFirst("-(alpha\\d+|beta\\d+|rc\\d+)", "")
130149
);
150+
response.transportVersion = TransportVersion.fromString(((String) value.get("transport_version")));
131151
}, (parser, context) -> parser.map(), new ParseField("version"));
132152
}
133153

@@ -146,14 +166,15 @@ public boolean equals(Object o) {
146166
MainResponse other = (MainResponse) o;
147167
return Objects.equals(nodeName, other.nodeName)
148168
&& Objects.equals(version, other.version)
169+
&& Objects.equals(transportVersion, other.transportVersion)
149170
&& Objects.equals(clusterUuid, other.clusterUuid)
150171
&& Objects.equals(build, other.build)
151172
&& Objects.equals(clusterName, other.clusterName);
152173
}
153174

154175
@Override
155176
public int hashCode() {
156-
return Objects.hash(nodeName, version, clusterUuid, build, clusterName);
177+
return Objects.hash(nodeName, version, transportVersion, clusterUuid, build, clusterName);
157178
}
158179

159180
@Override
@@ -164,6 +185,8 @@ public String toString() {
164185
+ '\''
165186
+ ", version="
166187
+ version
188+
+ ", transportVersion="
189+
+ transportVersion
167190
+ ", clusterName="
168191
+ clusterName
169192
+ ", clusterUuid='"

modules/rest-root/src/main/java/org/elasticsearch/rest/root/TransportMainAction.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package org.elasticsearch.rest.root;
1010

1111
import org.elasticsearch.Build;
12+
import org.elasticsearch.TransportVersion;
1213
import org.elasticsearch.Version;
1314
import org.elasticsearch.action.ActionListener;
1415
import org.elasticsearch.action.support.ActionFilters;
@@ -42,7 +43,14 @@ public TransportMainAction(
4243
protected void doExecute(Task task, MainRequest request, ActionListener<MainResponse> listener) {
4344
ClusterState clusterState = clusterService.state();
4445
listener.onResponse(
45-
new MainResponse(nodeName, Version.CURRENT, clusterState.getClusterName(), clusterState.metadata().clusterUUID(), Build.CURRENT)
46+
new MainResponse(
47+
nodeName,
48+
Version.CURRENT,
49+
TransportVersion.current(),
50+
clusterState.getClusterName(),
51+
clusterState.metadata().clusterUUID(),
52+
Build.CURRENT
53+
)
4654
);
4755
}
4856
}

modules/rest-root/src/test/java/org/elasticsearch/rest/root/MainResponseTests.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
package org.elasticsearch.rest.root;
1010

1111
import org.elasticsearch.Build;
12+
import org.elasticsearch.TransportVersion;
1213
import org.elasticsearch.Version;
1314
import org.elasticsearch.cluster.ClusterName;
1415
import org.elasticsearch.common.Strings;
1516
import org.elasticsearch.common.io.stream.Writeable;
1617
import org.elasticsearch.common.xcontent.XContentHelper;
1718
import org.elasticsearch.test.AbstractXContentSerializingTestCase;
19+
import org.elasticsearch.test.TransportVersionUtils;
1820
import org.elasticsearch.test.VersionUtils;
1921
import org.elasticsearch.xcontent.ToXContent;
2022
import org.elasticsearch.xcontent.XContentBuilder;
@@ -33,8 +35,9 @@ protected MainResponse createTestInstance() {
3335
String nodeName = randomAlphaOfLength(10);
3436
final String date = new Date(randomNonNegativeLong()).toString();
3537
Version version = VersionUtils.randomIndexCompatibleVersion(random());
38+
TransportVersion transportVersion = TransportVersionUtils.randomVersion();
3639
Build build = new Build(Build.Type.UNKNOWN, randomAlphaOfLength(8), date, randomBoolean(), version.toString());
37-
return new MainResponse(nodeName, version, clusterName, clusterUuid, build);
40+
return new MainResponse(nodeName, version, transportVersion, clusterName, clusterUuid, build);
3841
}
3942

4043
@Override
@@ -52,7 +55,8 @@ public void testToXContent() throws IOException {
5255
final Build current = Build.CURRENT;
5356
Build build = new Build(current.type(), current.hash(), current.date(), current.isSnapshot(), current.qualifiedVersion());
5457
Version version = Version.CURRENT;
55-
MainResponse response = new MainResponse("nodeName", version, new ClusterName("clusterName"), clusterUUID, build);
58+
TransportVersion transportVersion = TransportVersion.current();
59+
MainResponse response = new MainResponse("nodeName", version, transportVersion, new ClusterName("clusterName"), clusterUUID, build);
5660
XContentBuilder builder = XContentFactory.jsonBuilder();
5761
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
5862
assertEquals(
@@ -72,7 +76,8 @@ public void testToXContent() throws IOException {
7276
"build_snapshot": %s,
7377
"lucene_version": "%s",
7478
"minimum_wire_compatibility_version": "%s",
75-
"minimum_index_compatibility_version": "%s"
79+
"minimum_index_compatibility_version": "%s",
80+
"transport_version": "%s"
7681
},
7782
"tagline": "You Know, for Search"
7883
}
@@ -85,7 +90,8 @@ public void testToXContent() throws IOException {
8590
current.isSnapshot(),
8691
version.luceneVersion().toString(),
8792
version.minimumCompatibilityVersion().toString(),
88-
version.minimumIndexCompatibilityVersion().toString()
93+
version.minimumIndexCompatibilityVersion().toString(),
94+
transportVersion.toString()
8995
)
9096
),
9197
Strings.toString(builder)
@@ -97,17 +103,19 @@ protected MainResponse mutateInstance(MainResponse mutateInstance) {
97103
String clusterUuid = mutateInstance.getClusterUuid();
98104
Build build = mutateInstance.getBuild();
99105
Version version = mutateInstance.getVersion();
106+
TransportVersion transportVersion = mutateInstance.getTransportVersion();
100107
String nodeName = mutateInstance.getNodeName();
101108
ClusterName clusterName = mutateInstance.getClusterName();
102-
switch (randomIntBetween(0, 4)) {
109+
switch (randomIntBetween(0, 5)) {
103110
case 0 -> clusterUuid = clusterUuid + randomAlphaOfLength(5);
104111
case 1 -> nodeName = nodeName + randomAlphaOfLength(5);
105112
case 2 ->
106113
// toggle the snapshot flag of the original Build parameter
107114
build = new Build(Build.Type.UNKNOWN, build.hash(), build.date(), build.isSnapshot() == false, build.qualifiedVersion());
108115
case 3 -> version = randomValueOtherThan(version, () -> VersionUtils.randomVersion(random()));
109116
case 4 -> clusterName = new ClusterName(clusterName + randomAlphaOfLength(5));
117+
case 5 -> transportVersion = randomValueOtherThan(transportVersion, () -> TransportVersionUtils.randomVersion(random()));
110118
}
111-
return new MainResponse(nodeName, version, clusterName, clusterUuid, build);
119+
return new MainResponse(nodeName, version, transportVersion, clusterName, clusterUuid, build);
112120
}
113121
}

modules/rest-root/src/test/java/org/elasticsearch/rest/root/RestMainActionTests.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package org.elasticsearch.rest.root;
1010

1111
import org.elasticsearch.Build;
12+
import org.elasticsearch.TransportVersion;
1213
import org.elasticsearch.Version;
1314
import org.elasticsearch.cluster.ClusterName;
1415
import org.elasticsearch.common.bytes.BytesReference;
@@ -34,9 +35,10 @@ public void testHeadResponse() throws Exception {
3435
final ClusterName clusterName = new ClusterName("cluster1");
3536
final String clusterUUID = randomAlphaOfLengthBetween(10, 20);
3637
final Version version = Version.CURRENT;
38+
final TransportVersion transportVersion = TransportVersion.current();
3739
final Build build = Build.CURRENT;
3840

39-
final MainResponse mainResponse = new MainResponse(nodeName, version, clusterName, clusterUUID, build);
41+
final MainResponse mainResponse = new MainResponse(nodeName, version, transportVersion, clusterName, clusterUUID, build);
4042
XContentBuilder builder = JsonXContent.contentBuilder();
4143
RestRequest restRequest = new FakeRestRequest() {
4244
@Override
@@ -58,10 +60,11 @@ public void testGetResponse() throws Exception {
5860
final ClusterName clusterName = new ClusterName("cluster1");
5961
final String clusterUUID = randomAlphaOfLengthBetween(10, 20);
6062
final Version version = Version.CURRENT;
63+
final TransportVersion transportVersion = TransportVersion.current();
6164
final Build build = Build.CURRENT;
6265
final boolean prettyPrint = randomBoolean();
6366

64-
final MainResponse mainResponse = new MainResponse(nodeName, version, clusterName, clusterUUID, build);
67+
final MainResponse mainResponse = new MainResponse(nodeName, version, transportVersion, clusterName, clusterUUID, build);
6568
XContentBuilder builder = JsonXContent.contentBuilder();
6669

6770
Map<String, String> params = new HashMap<>();

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,10 @@ private static TransportVersion registerTransportVersion(int id, String uniqueId
143143
public static final TransportVersion V_8_500_016 = registerTransportVersion(8_500_016, "492C94FB-AAEA-4C9E-8375-BDB67A398584");
144144
public static final TransportVersion V_8_500_017 = registerTransportVersion(8_500_017, "0EDCB5BA-049C-443C-8AB1-5FA58FB996FB");
145145
public static final TransportVersion V_8_500_018 = registerTransportVersion(8_500_018, "827C32CE-33D9-4AC3-A773-8FB768F59EAF");
146+
public static final TransportVersion V_8_500_019 = registerTransportVersion(8_500_019, "09bae57f-cab8-423c-aab3-c9778509ffe3");
146147

147148
private static class CurrentHolder {
148-
private static final TransportVersion CURRENT = findCurrent(V_8_500_018);
149+
private static final TransportVersion CURRENT = findCurrent(V_8_500_019);
149150

150151
// finds the pluggable current version, or uses the given fallback
151152
private static TransportVersion findCurrent(TransportVersion fallback) {

x-pack/plugin/sql/jdbc/src/test/java/org/elasticsearch/xpack/sql/jdbc/WebServerTestCase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package org.elasticsearch.xpack.sql.jdbc;
99

1010
import org.elasticsearch.Build;
11+
import org.elasticsearch.TransportVersion;
1112
import org.elasticsearch.Version;
1213
import org.elasticsearch.cluster.ClusterName;
1314
import org.elasticsearch.rest.root.MainResponse;
@@ -49,7 +50,8 @@ MainResponse createMainResponse(Version version) {
4950
String nodeName = randomAlphaOfLength(10);
5051
final String date = new Date(randomNonNegativeLong()).toString();
5152
Build build = new Build(Build.Type.UNKNOWN, randomAlphaOfLength(8), date, randomBoolean(), version.toString());
52-
return new MainResponse(nodeName, version, clusterName, clusterUuid, build);
53+
TransportVersion transportVersion = TransportVersion.current();
54+
return new MainResponse(nodeName, version, transportVersion, clusterName, clusterUuid, build);
5355
}
5456

5557
String webServerAddress() {

0 commit comments

Comments
 (0)