Skip to content

Commit 908d34d

Browse files
authored
Remove 8.11 node version inference code (#116019)
1 parent 22c55fa commit 908d34d

File tree

8 files changed

+23
-173
lines changed

8 files changed

+23
-173
lines changed

server/src/main/java/org/elasticsearch/cluster/ClusterState.java

Lines changed: 15 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.elasticsearch.common.xcontent.ChunkedToXContentHelper;
4848
import org.elasticsearch.core.Nullable;
4949
import org.elasticsearch.core.SuppressForbidden;
50+
import org.elasticsearch.core.UpdateForV9;
5051
import org.elasticsearch.index.shard.IndexLongFieldRange;
5152
import org.elasticsearch.indices.SystemIndexDescriptor;
5253
import org.elasticsearch.xcontent.ToXContent;
@@ -1025,52 +1026,25 @@ public static ClusterState readFrom(StreamInput in, DiscoveryNode localNode) thr
10251026
builder.metadata = Metadata.readFrom(in);
10261027
builder.routingTable = RoutingTable.readFrom(in);
10271028
builder.nodes = DiscoveryNodes.readFrom(in, localNode);
1028-
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
1029-
builder.nodeIdsToCompatibilityVersions(in.readMap(CompatibilityVersions::readVersion));
1030-
} else {
1031-
// this clusterstate is from a pre-8.8.0 node
1032-
// infer the versions from discoverynodes for now
1033-
// leave mappings versions empty
1034-
builder.nodes()
1035-
.getNodes()
1036-
.values()
1037-
.forEach(n -> builder.putCompatibilityVersions(n.getId(), inferTransportVersion(n), Map.of()));
1038-
}
1039-
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
1040-
builder.nodeFeatures(ClusterFeatures.readFrom(in));
1041-
}
1029+
builder.nodeIdsToCompatibilityVersions(in.readMap(CompatibilityVersions::readVersion));
1030+
builder.nodeFeatures(ClusterFeatures.readFrom(in));
10421031
builder.blocks = ClusterBlocks.readFrom(in);
10431032
int customSize = in.readVInt();
10441033
for (int i = 0; i < customSize; i++) {
10451034
Custom customIndexMetadata = in.readNamedWriteable(Custom.class);
10461035
builder.putCustom(customIndexMetadata.getWriteableName(), customIndexMetadata);
10471036
}
1048-
if (in.getTransportVersion().before(TransportVersions.V_8_0_0)) {
1049-
in.readVInt(); // used to be minimumMasterNodesOnPublishingMaster, which was used in 7.x for BWC with 6.x
1050-
}
10511037
return builder.build();
10521038
}
10531039

10541040
/**
10551041
* If the cluster state does not contain transport version information, this is the version
10561042
* that is inferred for all nodes on version 8.8.0 or above.
10571043
*/
1044+
@UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA)
10581045
public static final TransportVersion INFERRED_TRANSPORT_VERSION = TransportVersions.V_8_8_0;
1059-
10601046
public static final Version VERSION_INTRODUCING_TRANSPORT_VERSIONS = Version.V_8_8_0;
10611047

1062-
private static TransportVersion inferTransportVersion(DiscoveryNode node) {
1063-
TransportVersion tv;
1064-
if (node.getVersion().before(VERSION_INTRODUCING_TRANSPORT_VERSIONS)) {
1065-
// 1-to-1 mapping between Version and TransportVersion
1066-
tv = TransportVersion.fromId(node.getPre811VersionId().getAsInt());
1067-
} else {
1068-
// use the lowest value it could be for now
1069-
tv = INFERRED_TRANSPORT_VERSION;
1070-
}
1071-
return tv;
1072-
}
1073-
10741048
@Override
10751049
public void writeTo(StreamOutput out) throws IOException {
10761050
clusterName.writeTo(out);
@@ -1079,17 +1053,10 @@ public void writeTo(StreamOutput out) throws IOException {
10791053
metadata.writeTo(out);
10801054
routingTable.writeTo(out);
10811055
nodes.writeTo(out);
1082-
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
1083-
out.writeMap(compatibilityVersions, StreamOutput::writeWriteable);
1084-
}
1085-
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
1086-
clusterFeatures.writeTo(out);
1087-
}
1056+
out.writeMap(compatibilityVersions, StreamOutput::writeWriteable);
1057+
clusterFeatures.writeTo(out);
10881058
blocks.writeTo(out);
10891059
VersionedNamedWriteable.writeVersionedWritables(out, customs);
1090-
if (out.getTransportVersion().before(TransportVersions.V_8_0_0)) {
1091-
out.writeVInt(-1); // used to be minimumMasterNodesOnPublishingMaster, which was used in 7.x for BWC with 6.x
1092-
}
10931060
}
10941061

10951062
private static class ClusterStateDiff implements Diff<ClusterState> {
@@ -1106,7 +1073,6 @@ private static class ClusterStateDiff implements Diff<ClusterState> {
11061073

11071074
private final Diff<DiscoveryNodes> nodes;
11081075

1109-
@Nullable
11101076
private final Diff<Map<String, CompatibilityVersions>> versions;
11111077
private final Diff<ClusterFeatures> features;
11121078

@@ -1142,26 +1108,13 @@ private static class ClusterStateDiff implements Diff<ClusterState> {
11421108
toVersion = in.readLong();
11431109
routingTable = RoutingTable.readDiffFrom(in);
11441110
nodes = DiscoveryNodes.readDiffFrom(in, localNode);
1145-
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0) && in.readBoolean()) {
1146-
versions = DiffableUtils.readJdkMapDiff(
1147-
in,
1148-
DiffableUtils.getStringKeySerializer(),
1149-
COMPATIBILITY_VERSIONS_VALUE_SERIALIZER
1150-
);
1151-
} else {
1152-
versions = null; // infer at application time
1153-
}
1154-
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
1155-
features = ClusterFeatures.readDiffFrom(in);
1156-
} else {
1157-
features = null; // fill in when nodes re-register with a master that understands features
1158-
}
1111+
boolean versionPresent = in.readBoolean();
1112+
if (versionPresent == false) throw new IOException("ClusterStateDiff stream must have versions");
1113+
versions = DiffableUtils.readJdkMapDiff(in, DiffableUtils.getStringKeySerializer(), COMPATIBILITY_VERSIONS_VALUE_SERIALIZER);
1114+
features = ClusterFeatures.readDiffFrom(in);
11591115
metadata = Metadata.readDiffFrom(in);
11601116
blocks = ClusterBlocks.readDiffFrom(in);
11611117
customs = DiffableUtils.readJdkMapDiff(in, DiffableUtils.getStringKeySerializer(), CUSTOM_VALUE_SERIALIZER);
1162-
if (in.getTransportVersion().before(TransportVersions.V_8_0_0)) {
1163-
in.readVInt(); // used to be minimumMasterNodesOnPublishingMaster, which was used in 7.x for BWC with 6.x
1164-
}
11651118
}
11661119

11671120
@Override
@@ -1172,18 +1125,12 @@ public void writeTo(StreamOutput out) throws IOException {
11721125
out.writeLong(toVersion);
11731126
routingTable.writeTo(out);
11741127
nodes.writeTo(out);
1175-
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
1176-
out.writeOptionalWriteable(versions);
1177-
}
1178-
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
1179-
features.writeTo(out);
1180-
}
1128+
out.writeBoolean(true);
1129+
versions.writeTo(out);
1130+
features.writeTo(out);
11811131
metadata.writeTo(out);
11821132
blocks.writeTo(out);
11831133
customs.writeTo(out);
1184-
if (out.getTransportVersion().before(TransportVersions.V_8_0_0)) {
1185-
out.writeVInt(-1); // used to be minimumMasterNodesOnPublishingMaster, which was used in 7.x for BWC with 6.x
1186-
}
11871134
}
11881135

11891136
@Override
@@ -1200,19 +1147,8 @@ public ClusterState apply(ClusterState state) {
12001147
builder.version(toVersion);
12011148
builder.routingTable(routingTable.apply(state.routingTable));
12021149
builder.nodes(nodes.apply(state.nodes));
1203-
if (versions != null) {
1204-
builder.nodeIdsToCompatibilityVersions(this.versions.apply(state.compatibilityVersions));
1205-
} else {
1206-
// infer the versions from discoverynodes for now
1207-
// leave mappings versions empty
1208-
builder.nodes()
1209-
.getNodes()
1210-
.values()
1211-
.forEach(n -> builder.putCompatibilityVersions(n.getId(), inferTransportVersion(n), Map.of()));
1212-
}
1213-
if (features != null) {
1214-
builder.nodeFeatures(this.features.apply(state.clusterFeatures));
1215-
}
1150+
builder.nodeIdsToCompatibilityVersions(this.versions.apply(state.compatibilityVersions));
1151+
builder.nodeFeatures(this.features.apply(state.clusterFeatures));
12161152
builder.metadata(metadata.apply(state.metadata));
12171153
builder.blocks(blocks.apply(state.blocks));
12181154
builder.customs(customs.apply(state.customs));

server/src/main/java/org/elasticsearch/cluster/coordination/JoinRequest.java

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,13 @@
88
*/
99
package org.elasticsearch.cluster.coordination;
1010

11-
import org.elasticsearch.TransportVersion;
12-
import org.elasticsearch.TransportVersions;
1311
import org.elasticsearch.cluster.node.DiscoveryNode;
1412
import org.elasticsearch.cluster.version.CompatibilityVersions;
1513
import org.elasticsearch.common.io.stream.StreamInput;
1614
import org.elasticsearch.common.io.stream.StreamOutput;
1715
import org.elasticsearch.transport.TransportRequest;
1816

1917
import java.io.IOException;
20-
import java.util.Map;
2118
import java.util.Objects;
2219
import java.util.Optional;
2320
import java.util.Set;
@@ -72,21 +69,8 @@ public JoinRequest(
7269
public JoinRequest(StreamInput in) throws IOException {
7370
super(in);
7471
sourceNode = new DiscoveryNode(in);
75-
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
76-
compatibilityVersions = CompatibilityVersions.readVersion(in);
77-
} else {
78-
// there's a 1-1 mapping from Version to TransportVersion before 8.8.0
79-
// no known mapping versions here
80-
compatibilityVersions = new CompatibilityVersions(
81-
TransportVersion.fromId(sourceNode.getPre811VersionId().getAsInt()),
82-
Map.of()
83-
);
84-
}
85-
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
86-
features = in.readCollectionAsSet(StreamInput::readString);
87-
} else {
88-
features = Set.of();
89-
}
72+
compatibilityVersions = CompatibilityVersions.readVersion(in);
73+
features = in.readCollectionAsSet(StreamInput::readString);
9074
minimumTerm = in.readLong();
9175
optionalJoin = Optional.ofNullable(in.readOptionalWriteable(Join::new));
9276
}
@@ -95,12 +79,8 @@ public JoinRequest(StreamInput in) throws IOException {
9579
public void writeTo(StreamOutput out) throws IOException {
9680
super.writeTo(out);
9781
sourceNode.writeTo(out);
98-
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
99-
compatibilityVersions.writeTo(out);
100-
}
101-
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
102-
out.writeCollection(features, StreamOutput::writeString);
103-
}
82+
compatibilityVersions.writeTo(out);
83+
out.writeCollection(features, StreamOutput::writeString);
10484
out.writeLong(minimumTerm);
10585
out.writeOptionalWriteable(optionalJoin.orElse(null));
10686
}

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MlConfigVersion.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,10 +298,8 @@ public static Tuple<MlConfigVersion, MlConfigVersion> getMinMaxMlConfigVersion(D
298298

299299
public static MlConfigVersion getMlConfigVersionForNode(DiscoveryNode node) {
300300
String mlConfigVerStr = node.getAttributes().get(ML_CONFIG_VERSION_NODE_ATTR);
301-
if (mlConfigVerStr != null) {
302-
return fromString(mlConfigVerStr);
303-
}
304-
return fromId(node.getPre811VersionId().orElseThrow(() -> new IllegalStateException("getting legacy version id not possible")));
301+
if (mlConfigVerStr == null) throw new IllegalStateException(ML_CONFIG_VERSION_NODE_ATTR + " not present on node");
302+
return fromString(mlConfigVerStr);
305303
}
306304

307305
// Parse an MlConfigVersion from a string.

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformConfigVersion.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -331,10 +331,8 @@ public static Tuple<TransformConfigVersion, TransformConfigVersion> getMinMaxTra
331331

332332
public static TransformConfigVersion getTransformConfigVersionForNode(DiscoveryNode node) {
333333
String transformConfigVerStr = node.getAttributes().get(TRANSFORM_CONFIG_VERSION_NODE_ATTR);
334-
if (transformConfigVerStr != null) {
335-
return fromString(transformConfigVerStr);
336-
}
337-
return fromId(node.getPre811VersionId().orElseThrow(() -> new IllegalStateException("getting legacy version id not possible")));
334+
if (transformConfigVerStr == null) throw new IllegalStateException(TRANSFORM_CONFIG_VERSION_NODE_ATTR + " not present on node");
335+
return fromString(transformConfigVerStr);
338336
}
339337

340338
// Parse an TransformConfigVersion from a string.

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/MlConfigVersionTests.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -196,15 +196,6 @@ public void testGetMinMaxMlConfigVersionWhenMlConfigVersionAttrIsMissing() {
196196
}
197197

198198
public void testGetMlConfigVersionForNode() {
199-
DiscoveryNode node = DiscoveryNodeUtils.builder("_node_id4")
200-
.name("_node_name4")
201-
.address(new TransportAddress(InetAddress.getLoopbackAddress(), 9303))
202-
.roles(ROLES_WITH_ML)
203-
.version(VersionInformation.inferVersions(Version.fromString("8.7.0")))
204-
.build();
205-
MlConfigVersion mlConfigVersion = MlConfigVersion.getMlConfigVersionForNode(node);
206-
assertEquals(MlConfigVersion.V_8_7_0, mlConfigVersion);
207-
208199
DiscoveryNode node1 = DiscoveryNodeUtils.builder("_node_id5")
209200
.name("_node_name5")
210201
.address(new TransportAddress(InetAddress.getLoopbackAddress(), 9304))

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/transform/TransformConfigVersionTests.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,6 @@ public void testGetMinMaxTransformConfigVersion() {
155155
}
156156

157157
public void testGetTransformConfigVersionForNode() {
158-
DiscoveryNode node = DiscoveryNodeUtils.builder("_node_id4")
159-
.name("_node_name4")
160-
.address(new TransportAddress(InetAddress.getLoopbackAddress(), 9303))
161-
.roles(ROLES_WITH_TRANSFORM)
162-
.version(VersionInformation.inferVersions(Version.fromString("8.7.0")))
163-
.build();
164-
TransformConfigVersion transformConfigVersion = TransformConfigVersion.getTransformConfigVersionForNode(node);
165-
assertEquals(TransformConfigVersion.V_8_7_0, transformConfigVersion);
166-
167158
DiscoveryNode node1 = DiscoveryNodeUtils.builder("_node_id5")
168159
.name("_node_name5")
169160
.address(new TransportAddress(InetAddress.getLoopbackAddress(), 9304))

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/action/TrainedModelValidatorTests.java

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -64,37 +64,6 @@ public void testValidateMinimumVersion() {
6464
{
6565
ClusterState state = mock(ClusterState.class);
6666

67-
final ModelPackageConfig packageConfigCurrent = new ModelPackageConfig.Builder(
68-
ModelPackageConfigTests.randomModulePackageConfig()
69-
).setMinimumVersion(MlConfigVersion.CURRENT.toString()).build();
70-
71-
DiscoveryNode node = DiscoveryNodeUtils.create(
72-
"node1",
73-
new TransportAddress(InetAddress.getLoopbackAddress(), 9300),
74-
Version.V_8_7_0
75-
);
76-
77-
DiscoveryNodes nodes = DiscoveryNodes.builder().add(node).build();
78-
79-
when(state.nodes()).thenReturn(nodes);
80-
81-
Exception e = expectThrows(
82-
ActionRequestValidationException.class,
83-
() -> TrainedModelValidator.validateMinimumVersion(packageConfigCurrent, state)
84-
);
85-
86-
assertEquals(
87-
"Validation Failed: 1: The model ["
88-
+ packageConfigCurrent.getPackagedModelId()
89-
+ "] requires that all nodes have ML config version ["
90-
+ MlConfigVersion.CURRENT
91-
+ "] or higher;",
92-
e.getMessage()
93-
);
94-
}
95-
{
96-
ClusterState state = mock(ClusterState.class);
97-
9867
final ModelPackageConfig packageConfigBroken = new ModelPackageConfig.Builder(
9968
ModelPackageConfigTests.randomModulePackageConfig()
10069
).setMinimumVersion("_broken_version_").build();

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/JobNodeSelectorTests.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,6 @@ public void testNodeNameAndVersionForRecentNode() {
8888
assertEquals("{_node_name1}{ML config version=10.0.0}", JobNodeSelector.nodeNameAndVersion(node));
8989
}
9090

91-
public void testNodeNameAndVersionForOldNode() {
92-
TransportAddress ta = new TransportAddress(InetAddress.getLoopbackAddress(), 9300);
93-
Map<String, String> attributes = Map.of("unrelated", "attribute");
94-
DiscoveryNode node = DiscoveryNodeUtils.builder("_node_id2")
95-
.name("_node_name2")
96-
.address(ta)
97-
.attributes(attributes)
98-
.roles(ROLES_WITH_ML)
99-
.version(VersionInformation.inferVersions(Version.V_8_7_0))
100-
.build();
101-
assertEquals("{_node_name2}{ML config version=8.7.0}", JobNodeSelector.nodeNameAndVersion(node));
102-
}
103-
10491
public void testNodeNameAndMlAttributes() {
10592
TransportAddress ta = new TransportAddress(InetAddress.getLoopbackAddress(), 9300);
10693
SortedMap<String, String> attributes = new TreeMap<>();

0 commit comments

Comments
 (0)