Skip to content
Closed
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ public InternalAutoDateHistogram(StreamInput in) throws IOException {
format = in.readNamedWriteable(DocValueFormat.class);
buckets = in.readCollectionAsList(stream -> Bucket.readFrom(stream, format));
this.targetBuckets = in.readVInt();
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_3_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_3_0)) {
bucketInnerInterval = in.readVLong();
} else {
bucketInnerInterval = 1; // Calculated on merge.
Expand All @@ -224,7 +224,7 @@ protected void doWriteTo(StreamOutput out) throws IOException {
out.writeNamedWriteable(format);
out.writeCollection(buckets);
out.writeVInt(targetBuckets);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_3_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_3_0)) {
out.writeVLong(bucketInnerInterval);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,14 @@ public boolean supportsSampling() {
*/
public MatrixStatsAggregationBuilder(StreamInput in) throws IOException {
super(in);
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_7_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_7_0)) {
multiValueMode = MultiValueMode.readMultiValueModeFrom(in);
}
}

@Override
protected void innerWriteTo(StreamOutput out) throws IOException {
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_7_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_7_0)) {
multiValueMode.writeTo(out);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public Request(boolean sorted, String ecsCompatibility) {
Request(StreamInput in) throws IOException {
super(in);
this.sorted = in.readBoolean();
this.ecsCompatibility = in.getTransportVersion().onOrAfter(TransportVersions.V_8_0_0)
this.ecsCompatibility = in.getTransportVersion().supports(TransportVersions.V_8_0_0)
? in.readString()
: GrokProcessor.DEFAULT_ECS_COMPATIBILITY_MODE;
}
Expand All @@ -74,7 +74,7 @@ public ActionRequestValidationException validate() {
public void writeTo(StreamOutput out) throws IOException {
super.writeTo(out);
out.writeBoolean(sorted);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_0_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_0_0)) {
out.writeString(ecsCompatibility);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
public class GeoIpTaskState implements PersistentTaskState, VersionedNamedWriteable {

private static boolean includeSha256(TransportVersion version) {
return version.onOrAfter(TransportVersions.V_8_15_0);
return version.supports(TransportVersions.V_8_15_0);
}

private static final ParseField DATABASES = new ParseField("databases");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public DatabaseConfiguration(StreamInput in) throws IOException {
}

private static Provider readProvider(StreamInput in) throws IOException {
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_16_0)) {
return in.readNamedWriteable(Provider.class);
} else {
// prior to the above version, everything was always a maxmind, so this half of the if is logical
Expand All @@ -154,7 +154,7 @@ public static DatabaseConfiguration parse(XContentParser parser, String id) {
public void writeTo(StreamOutput out) throws IOException {
out.writeString(id);
out.writeString(name);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_16_0)) {
out.writeNamedWriteable(provider);
} else {
if (provider instanceof Maxmind maxmind) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,14 +167,14 @@ public static class NodeResponse extends BaseNodeResponse {
protected NodeResponse(StreamInput in) throws IOException {
super(in);
downloaderStats = in.readBoolean() ? new GeoIpDownloaderStats(in) : null;
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_14_0)) {
cacheStats = in.readBoolean() ? new CacheStats(in) : null;
} else {
cacheStats = null;
}
databases = in.readCollectionAsImmutableSet(StreamInput::readString);
filesInTemp = in.readCollectionAsImmutableSet(StreamInput::readString);
configDatabases = in.getTransportVersion().onOrAfter(TransportVersions.V_8_0_0)
configDatabases = in.getTransportVersion().supports(TransportVersions.V_8_0_0)
? in.readCollectionAsImmutableSet(StreamInput::readString)
: null;
}
Expand Down Expand Up @@ -218,15 +218,15 @@ public void writeTo(StreamOutput out) throws IOException {
if (downloaderStats != null) {
downloaderStats.writeTo(out);
}
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_14_0)) {
out.writeBoolean(cacheStats != null);
if (cacheStats != null) {
cacheStats.writeTo(out);
}
}
out.writeStringCollection(databases);
out.writeStringCollection(filesInTemp);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_0_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_0_0)) {
out.writeStringCollection(configDatabases);
}
}
Expand Down
13 changes: 6 additions & 7 deletions server/src/main/java/org/elasticsearch/Build.java
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ static URL getElasticsearchCodeSourceLocation() {

public static Build readBuild(StreamInput in) throws IOException {
final String flavor;
if (in.getTransportVersion().before(TransportVersions.V_8_3_0) || in.getTransportVersion().onOrAfter(TransportVersions.V_8_10_X)) {
if (in.getTransportVersion().before(TransportVersions.V_8_3_0) || in.getTransportVersion().supports(TransportVersions.V_8_10_X)) {
flavor = in.readString();
} else {
flavor = "default";
Expand All @@ -220,7 +220,7 @@ public static Build readBuild(StreamInput in) throws IOException {
final String minWireVersion;
final String minIndexVersion;
final String displayString;
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_12_0)) {
version = in.readString();
qualifier = in.readOptionalString();
snapshot = in.readBoolean();
Expand All @@ -235,7 +235,7 @@ public static Build readBuild(StreamInput in) throws IOException {
version = versionMatcher.group(1);
qualifier = versionMatcher.group(2);
}
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_10_X)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_10_X)) {
minWireVersion = in.readString();
minIndexVersion = in.readString();
displayString = in.readString();
Expand All @@ -251,22 +251,21 @@ public static Build readBuild(StreamInput in) throws IOException {
}

public static void writeBuild(Build build, StreamOutput out) throws IOException {
if (out.getTransportVersion().before(TransportVersions.V_8_3_0)
|| out.getTransportVersion().onOrAfter(TransportVersions.V_8_10_X)) {
if (out.getTransportVersion().before(TransportVersions.V_8_3_0) || out.getTransportVersion().supports(TransportVersions.V_8_10_X)) {
out.writeString(build.flavor());
}
out.writeString(build.type().displayName());
out.writeString(build.hash());
out.writeString(build.date());
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_12_0)) {
out.writeString(build.version());
out.writeOptionalString(build.qualifier());
out.writeBoolean(build.isSnapshot());
} else {
out.writeBoolean(build.isSnapshot());
out.writeString(build.qualifiedVersion());
}
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_10_X)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_10_X)) {
out.writeString(build.minWireCompatVersion());
out.writeString(build.minIndexCompatVersion());
out.writeString(build.displayString());
Expand Down
22 changes: 19 additions & 3 deletions server/src/main/java/org/elasticsearch/TransportVersion.java
Original file line number Diff line number Diff line change
Expand Up @@ -281,11 +281,27 @@ public static TransportVersion max(TransportVersion version1, TransportVersion v
return version1.id > version2.id ? version1 : version2;
}

@Override
public boolean onOrAfter(TransportVersion version) {
throw new UnsupportedOperationException("use TransportVersion.supports instead");
}

@Override
public boolean before(TransportVersion version) {
return version.id() > id();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we throw UOE here as well, suggesting .supports(...) == false? Or is that intended for a followup?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That will 100% be a follow up. I just prefer to do one method at at time given how large this change is.

}

@Override
public boolean between(TransportVersion lowerInclusive, TransportVersion upperExclusive) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like the above, can this be blocked in a followup?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

if (upperExclusive.onOrBefore(lowerInclusive)) throw new IllegalArgumentException();
return lowerInclusive.id <= id && before(upperExclusive);
}

/**
* Returns {@code true} if the specified version is compatible with this running version of Elasticsearch.
*/
public static boolean isCompatible(TransportVersion version) {
return version.onOrAfter(VersionsHolder.MINIMUM_COMPATIBLE);
return version.supports(VersionsHolder.MINIMUM_COMPATIBLE);
}

/**
Expand Down Expand Up @@ -376,7 +392,7 @@ public static TransportVersion fromString(String str) {
* </ul>
*/
public boolean isPatchFrom(TransportVersion version) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like there are only a handful of remaining uses, perhaps these versions could be manually migrated (building a chained TransportVersion in memory) so that they can use supports and this could be made private?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good idea. I will look into that.

return onOrAfter(version) && id < version.id + 100 - (version.id % 100);
return version.id <= id && id < version.id + 100 - (version.id % 100);
}

/**
Expand Down Expand Up @@ -417,7 +433,7 @@ public boolean isPatchFrom(TransportVersion version) {
* }
*/
public boolean supports(TransportVersion version) {
if (onOrAfter(version)) {
if (version.id <= id) {
return true;
}
TransportVersion nextPatchVersion = version.nextPatchVersion;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,16 @@ public Request(TimeValue masterNodeTimeout, TaskId parentTaskId, EnumSet<Metric>

public Request(StreamInput in) throws IOException {
super(in);
this.metrics = in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)
this.metrics = in.getTransportVersion().supports(TransportVersions.V_8_16_0)
? in.readEnumSet(Metric.class)
: EnumSet.of(Metric.ALLOCATIONS, Metric.FS);
}

@Override
public void writeTo(StreamOutput out) throws IOException {
assert out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0);
assert out.getTransportVersion().supports(TransportVersions.V_8_14_0);
super.writeTo(out);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_16_0)) {
out.writeEnumSet(metrics);
}
}
Expand Down Expand Up @@ -177,7 +177,7 @@ public Response(Map<String, NodeAllocationStats> nodeAllocationStats, DiskThresh

public Response(StreamInput in) throws IOException {
this.nodeAllocationStats = in.readImmutableMap(StreamInput::readString, NodeAllocationStats::new);
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_15_0)) {
this.diskThresholdSettings = in.readOptionalWriteable(DiskThresholdSettings::readFrom);
} else {
this.diskThresholdSettings = null;
Expand All @@ -187,7 +187,7 @@ public Response(StreamInput in) throws IOException {
@Override
public void writeTo(StreamOutput out) throws IOException {
out.writeMap(nodeAllocationStats, StreamOutput::writeString, StreamOutput::writeWriteable);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_15_0)) {
out.writeOptionalWriteable(diskThresholdSettings);
} else {
assert diskThresholdSettings == null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public UpdateDesiredNodesRequest(StreamInput in) throws IOException {
this.historyID = in.readString();
this.version = in.readLong();
this.nodes = in.readCollectionAsList(DesiredNode::readFrom);
if (in.getTransportVersion().onOrAfter(DRY_RUN_VERSION)) {
if (in.getTransportVersion().supports(DRY_RUN_VERSION)) {
this.dryRun = in.readBoolean();
} else {
this.dryRun = false;
Expand All @@ -82,7 +82,7 @@ public void writeTo(StreamOutput out) throws IOException {
out.writeString(historyID);
out.writeLong(version);
out.writeCollection(nodes);
if (out.getTransportVersion().onOrAfter(DRY_RUN_VERSION)) {
if (out.getTransportVersion().supports(DRY_RUN_VERSION)) {
out.writeBoolean(dryRun);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ public UpdateDesiredNodesResponse(boolean replacedExistingHistoryId, boolean dry

public UpdateDesiredNodesResponse(StreamInput in) throws IOException {
this.replacedExistingHistoryId = in.readBoolean();
dryRun = in.getTransportVersion().onOrAfter(DRY_RUN_SUPPORTING_VERSION) ? in.readBoolean() : false;
dryRun = in.getTransportVersion().supports(DRY_RUN_SUPPORTING_VERSION) ? in.readBoolean() : false;
}

@Override
public void writeTo(StreamOutput out) throws IOException {
out.writeBoolean(replacedExistingHistoryId);
if (out.getTransportVersion().onOrAfter(DRY_RUN_SUPPORTING_VERSION)) {
if (out.getTransportVersion().supports(DRY_RUN_SUPPORTING_VERSION)) {
out.writeBoolean(dryRun);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class NodeHotThreads extends BaseNodeResponse {

NodeHotThreads(StreamInput in) throws IOException {
super(in);
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_13_0)) {
bytes = in.readReleasableBytesReference();
} else {
bytes = ReleasableBytesReference.wrap(new BytesArray(in.readString().getBytes(StandardCharsets.UTF_8)));
Expand Down Expand Up @@ -57,7 +57,7 @@ public java.io.Reader getHotThreadsReader() {
@Override
public void writeTo(StreamOutput out) throws IOException {
super.writeTo(out);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_13_0)) {
out.writeBytesReference(bytes);
} else {
out.writeString(bytes.utf8ToString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ public class NodeInfo extends BaseNodeResponse {

public NodeInfo(StreamInput in) throws IOException {
super(in);
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_12_0)) {
version = in.readString();
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_1)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_16_1)) {
compatibilityVersions = CompatibilityVersions.readVersion(in);
} else {
compatibilityVersions = new CompatibilityVersions(TransportVersion.readVersion(in), Map.of()); // unknown mappings versions
Expand All @@ -75,18 +75,18 @@ public NodeInfo(StreamInput in) throws IOException {
} else {
Version legacyVersion = Version.readVersion(in);
version = legacyVersion.toString();
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_8_0)) {
compatibilityVersions = new CompatibilityVersions(TransportVersion.readVersion(in), Map.of()); // unknown mappings versions
} else {
compatibilityVersions = new CompatibilityVersions(TransportVersion.fromId(legacyVersion.id), Map.of());
}
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_11_X)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_11_X)) {
indexVersion = IndexVersion.readVersion(in);
} else {
indexVersion = IndexVersion.fromId(legacyVersion.id);
}
}
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_11_X)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_11_X)) {
componentVersions = in.readImmutableMap(StreamInput::readString, StreamInput::readVInt);
} else {
componentVersions = Map.of();
Expand All @@ -111,7 +111,7 @@ public NodeInfo(StreamInput in) throws IOException {
addInfoIfNonNull(PluginsAndModules.class, in.readOptionalWriteable(PluginsAndModules::new));
addInfoIfNonNull(IngestInfo.class, in.readOptionalWriteable(IngestInfo::new));
addInfoIfNonNull(AggregationInfo.class, in.readOptionalWriteable(AggregationInfo::new));
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
if (in.getTransportVersion().supports(TransportVersions.V_8_8_0)) {
addInfoIfNonNull(RemoteClusterServerInfo.class, in.readOptionalWriteable(RemoteClusterServerInfo::new));
}
}
Expand Down Expand Up @@ -246,17 +246,17 @@ private <T extends ReportingService.Info> void addInfoIfNonNull(Class<T> clazz,
@Override
public void writeTo(StreamOutput out) throws IOException {
super.writeTo(out);
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_12_0)) {
out.writeString(version);
} else {
Version.writeVersion(Version.fromString(version), out);
}
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_1)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_16_1)) {
compatibilityVersions.writeTo(out);
} else if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
} else if (out.getTransportVersion().supports(TransportVersions.V_8_8_0)) {
TransportVersion.writeVersion(compatibilityVersions.transportVersion(), out);
}
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_11_X)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_11_X)) {
IndexVersion.writeVersion(indexVersion, out);
out.writeMap(componentVersions, StreamOutput::writeString, StreamOutput::writeVInt);
}
Expand All @@ -282,7 +282,7 @@ public void writeTo(StreamOutput out) throws IOException {
out.writeOptionalWriteable(getInfo(PluginsAndModules.class));
out.writeOptionalWriteable(getInfo(IngestInfo.class));
out.writeOptionalWriteable(getInfo(AggregationInfo.class));
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
if (out.getTransportVersion().supports(TransportVersions.V_8_8_0)) {
out.writeOptionalWriteable(getInfo(RemoteClusterServerInfo.class));
}
}
Expand Down
Loading