diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 90b2870c08378..35ebed5ae7425 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -140,38 +140,6 @@ static TransportVersion def(int id) { public static final TransportVersion TIMEOUT_GET_PARAM_FOR_RESOLVE_CLUSTER = def(8_838_0_00); public static final TransportVersion INFERENCE_REQUEST_ADAPTIVE_RATE_LIMITING = def(8_839_0_00); public static final TransportVersion ML_INFERENCE_IBM_WATSONX_RERANK_ADDED = def(8_840_0_00); - public static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = def(9_007_00_0); - public static final TransportVersion ESQL_LOOKUP_JOIN_SOURCE_TEXT = def(9_008_0_00); - public static final TransportVersion SLM_UNHEALTHY_IF_NO_SNAPSHOT_WITHIN = def(9_010_0_00); - public static final TransportVersion REMOVE_REPOSITORY_CONFLICT_MESSAGE = def(9_012_0_00); - public static final TransportVersion ESQL_SERIALIZE_SOURCE_FUNCTIONS_WARNINGS = def(9_016_0_00); - public static final TransportVersion ESQL_DRIVER_NODE_DESCRIPTION = def(9_017_0_00); - public static final TransportVersion MULTI_PROJECT = def(9_018_0_00); - public static final TransportVersion UNASSIGENEDINFO_RESHARD_ADDED = def(9_022_0_00); - public static final TransportVersion MAX_OPERATION_SIZE_REJECTIONS_ADDED = def(9_024_0_00); - public static final TransportVersion ESQL_THREAD_NAME_IN_DRIVER_PROFILE = def(9_027_0_00); - public static final TransportVersion INDEX_RESHARDING_METADATA = def(9_031_0_00); - public static final TransportVersion INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD = def(9_034_0_00); - public static final TransportVersion INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD = def(9_036_0_00); - public static final TransportVersion PROJECT_ID_IN_SNAPSHOT = def(9_040_0_00); - public static final TransportVersion INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD = def(9_041_0_00); - public static final TransportVersion ESQL_REMOVE_AGGREGATE_TYPE = def(9_045_0_00); - public static final TransportVersion ADD_PROJECT_ID_TO_DSL_ERROR_INFO = def(9_046_0_00); - public static final TransportVersion REPO_ANALYSIS_COPY_BLOB = def(9_048_0_00); - public static final TransportVersion DEAD_ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = def(9_052_0_00); - public static final TransportVersion DEAD_BATCHED_QUERY_EXECUTION_DELAYABLE_WRITABLE = def(9_053_0_00); - public static final TransportVersion BATCHED_QUERY_EXECUTION_DELAYABLE_WRITABLE = def(9_057_0_00); - public static final TransportVersion COMPRESS_DELAYABLE_WRITEABLE = def(9_059_0_00); - public static final TransportVersion SYNONYMS_REFRESH_PARAM = def(9_060_0_00); - public static final TransportVersion DOC_FIELDS_AS_LIST = def(9_061_0_00); - public static final TransportVersion DENSE_VECTOR_OFF_HEAP_STATS = def(9_062_00_0); - public static final TransportVersion PROJECT_METADATA_SETTINGS = def(9_066_0_00); - public static final TransportVersion WRITE_LOAD_INCLUDES_BUFFER_WRITES = def(9_070_0_00); - public static final TransportVersion FILE_SETTINGS_HEALTH_INFO = def(9_072_0_00); - public static final TransportVersion ESQL_FIELD_ATTRIBUTE_DROP_TYPE = def(9_075_0_00); - public static final TransportVersion ESQL_TIME_SERIES_SOURCE_STATUS = def(9_076_0_00); - public static final TransportVersion NODES_STATS_SUPPORTS_MULTI_PROJECT = def(9_079_0_00); - public static final TransportVersion ESQL_LIMIT_ROW_SIZE = def(9_085_0_00); /* * STOP! READ THIS FIRST! No, really, diff --git a/server/src/main/java/org/elasticsearch/action/search/QueryPhaseResultConsumer.java b/server/src/main/java/org/elasticsearch/action/search/QueryPhaseResultConsumer.java index beb628e77e8f0..730da090270f0 100644 --- a/server/src/main/java/org/elasticsearch/action/search/QueryPhaseResultConsumer.java +++ b/server/src/main/java/org/elasticsearch/action/search/QueryPhaseResultConsumer.java @@ -12,7 +12,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.lucene.search.TopDocs; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.search.SearchPhaseController.TopDocsStats; import org.elasticsearch.common.breaker.CircuitBreaker; import org.elasticsearch.common.breaker.CircuitBreakingException; @@ -668,9 +668,13 @@ record MergeResult( long estimatedSize ) implements Writeable { + private static final TransportVersion BATCHED_QUERY_EXECUTION_DELAYABLE_WRITEABLE = TransportVersion.fromName( + "batched_query_execution_delayable_writeable" + ); + static MergeResult readFrom(StreamInput in) throws IOException { return new MergeResult(List.of(), Lucene.readTopDocsIncludingShardIndex(in), in.readOptionalWriteable(i -> { - if (i.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_EXECUTION_DELAYABLE_WRITABLE)) { + if (i.getTransportVersion().supports(BATCHED_QUERY_EXECUTION_DELAYABLE_WRITEABLE)) { return DelayableWriteable.delayed(InternalAggregations::readFrom, i); } else { return DelayableWriteable.referencing(InternalAggregations.readFrom(i)); @@ -684,9 +688,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalWriteable( reducedAggs == null ? null - : (out.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_EXECUTION_DELAYABLE_WRITABLE) - ? reducedAggs - : reducedAggs.expand()) + : (out.getTransportVersion().supports(BATCHED_QUERY_EXECUTION_DELAYABLE_WRITEABLE) ? reducedAggs : reducedAggs.expand()) ); out.writeVLong(estimatedSize); } diff --git a/server/src/main/java/org/elasticsearch/action/synonyms/DeleteSynonymRuleAction.java b/server/src/main/java/org/elasticsearch/action/synonyms/DeleteSynonymRuleAction.java index f316bfd213c1b..cb3f54a10df91 100644 --- a/server/src/main/java/org/elasticsearch/action/synonyms/DeleteSynonymRuleAction.java +++ b/server/src/main/java/org/elasticsearch/action/synonyms/DeleteSynonymRuleAction.java @@ -9,7 +9,7 @@ package org.elasticsearch.action.synonyms; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.LegacyActionRequest; @@ -31,6 +31,9 @@ public DeleteSynonymRuleAction() { } public static class Request extends LegacyActionRequest { + + private static final TransportVersion SYNONYMS_REFRESH_PARAM = TransportVersion.fromName("synonyms_refresh_param"); + private final String synonymsSetId; private final String synonymRuleId; private final boolean refresh; @@ -39,7 +42,7 @@ public Request(StreamInput in) throws IOException { super(in); this.synonymsSetId = in.readString(); this.synonymRuleId = in.readString(); - if (in.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (in.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { this.refresh = in.readBoolean(); } else { this.refresh = true; @@ -70,7 +73,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(synonymsSetId); out.writeString(synonymRuleId); - if (out.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (out.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { out.writeBoolean(refresh); } } diff --git a/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymRuleAction.java b/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymRuleAction.java index 354cad1a6f82b..90e0b7d291fe0 100644 --- a/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymRuleAction.java +++ b/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymRuleAction.java @@ -9,7 +9,7 @@ package org.elasticsearch.action.synonyms; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.LegacyActionRequest; @@ -40,6 +40,9 @@ public PutSynonymRuleAction() { } public static class Request extends LegacyActionRequest { + + private static final TransportVersion SYNONYMS_REFRESH_PARAM = TransportVersion.fromName("synonyms_refresh_param"); + private final String synonymsSetId; private final SynonymRule synonymRule; private final boolean refresh; @@ -59,7 +62,7 @@ public Request(StreamInput in) throws IOException { super(in); this.synonymsSetId = in.readString(); this.synonymRule = new SynonymRule(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (in.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { this.refresh = in.readBoolean(); } else { this.refresh = true; @@ -105,7 +108,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(synonymsSetId); synonymRule.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (out.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { out.writeBoolean(refresh); } } diff --git a/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymsAction.java b/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymsAction.java index 65310f6cf8375..adb46e050c5f0 100644 --- a/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymsAction.java +++ b/server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymsAction.java @@ -9,7 +9,7 @@ package org.elasticsearch.action.synonyms; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.LegacyActionRequest; @@ -57,11 +57,13 @@ public static class Request extends LegacyActionRequest { PARSER.declareObjectArray(ConstructingObjectParser.constructorArg(), (p, c) -> SynonymRule.fromXContent(p), SYNONYMS_SET_FIELD); } + private static final TransportVersion SYNONYMS_REFRESH_PARAM = TransportVersion.fromName("synonyms_refresh_param"); + public Request(StreamInput in) throws IOException { super(in); this.synonymsSetId = in.readString(); this.synonymRules = in.readArray(SynonymRule::new, SynonymRule[]::new); - if (in.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (in.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { this.refresh = in.readBoolean(); } else { this.refresh = false; @@ -104,7 +106,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(synonymsSetId); out.writeArray(synonymRules); - if (out.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (out.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { out.writeBoolean(refresh); } } diff --git a/server/src/main/java/org/elasticsearch/action/synonyms/SynonymUpdateResponse.java b/server/src/main/java/org/elasticsearch/action/synonyms/SynonymUpdateResponse.java index 5c55bd54a00d4..0c16a1068d2e5 100644 --- a/server/src/main/java/org/elasticsearch/action/synonyms/SynonymUpdateResponse.java +++ b/server/src/main/java/org/elasticsearch/action/synonyms/SynonymUpdateResponse.java @@ -9,7 +9,7 @@ package org.elasticsearch.action.synonyms; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.admin.indices.analyze.ReloadAnalyzersResponse; import org.elasticsearch.common.io.stream.StreamInput; @@ -32,12 +32,14 @@ public class SynonymUpdateResponse extends ActionResponse implements ToXContentO public static final String RELOAD_ANALYZERS_DETAILS_FIELD = "reload_analyzers_details"; static final ReloadAnalyzersResponse EMPTY_RELOAD_ANALYZER_RESPONSE = new ReloadAnalyzersResponse(0, 0, 0, List.of(), Map.of()); + private static final TransportVersion SYNONYMS_REFRESH_PARAM = TransportVersion.fromName("synonyms_refresh_param"); + private final UpdateSynonymsResultStatus updateStatus; private final ReloadAnalyzersResponse reloadAnalyzersResponse; public SynonymUpdateResponse(StreamInput in) throws IOException { this.updateStatus = in.readEnum(UpdateSynonymsResultStatus.class); - if (in.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (in.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { this.reloadAnalyzersResponse = in.readOptionalWriteable(ReloadAnalyzersResponse::new); } else { this.reloadAnalyzersResponse = new ReloadAnalyzersResponse(in); @@ -72,7 +74,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws @Override public void writeTo(StreamOutput out) throws IOException { out.writeEnum(updateStatus); - if (out.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_REFRESH_PARAM)) { + if (out.getTransportVersion().supports(SYNONYMS_REFRESH_PARAM)) { out.writeOptionalWriteable(reloadAnalyzersResponse); } else { if (reloadAnalyzersResponse == null) { diff --git a/server/src/main/java/org/elasticsearch/cluster/ClusterState.java b/server/src/main/java/org/elasticsearch/cluster/ClusterState.java index 534272051ca8c..b03cca116ef18 100644 --- a/server/src/main/java/org/elasticsearch/cluster/ClusterState.java +++ b/server/src/main/java/org/elasticsearch/cluster/ClusterState.java @@ -159,6 +159,8 @@ public CompatibilityVersions read(StreamInput in, String key) throws IOException public static final long UNKNOWN_VERSION = -1; + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + /** * Monotonically increasing on (and therefore uniquely identifies) committed states. However sometimes a state is created/applied * without committing it, for instance to add a {@link NoMasterBlockService#getNoMasterBlock}. @@ -1291,7 +1293,7 @@ public static ClusterState readFrom(StreamInput in, DiscoveryNode localNode) thr builder.version = in.readLong(); builder.uuid = in.readString(); builder.metadata = Metadata.readFrom(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT)) { builder.routingTable = GlobalRoutingTable.readFrom(in); } else { final RoutingTable rt = RoutingTable.readFrom(in); @@ -1317,7 +1319,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeLong(version); out.writeString(stateUUID); metadata.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT)) { routingTable.writeTo(out); } else { routingTable.getRoutingTable().writeTo(out); diff --git a/server/src/main/java/org/elasticsearch/cluster/SnapshotsInProgress.java b/server/src/main/java/org/elasticsearch/cluster/SnapshotsInProgress.java index f40fbe1a5861f..f5b10376b5b01 100644 --- a/server/src/main/java/org/elasticsearch/cluster/SnapshotsInProgress.java +++ b/server/src/main/java/org/elasticsearch/cluster/SnapshotsInProgress.java @@ -1812,6 +1812,8 @@ public void writeTo(StreamOutput out) throws IOException { private static final class SnapshotInProgressDiff implements NamedDiff { + private static final TransportVersion PROJECT_ID_IN_SNAPSHOT = TransportVersion.fromName("project_id_in_snapshot"); + private final SnapshotsInProgress after; private final DiffableUtils.MapDiff> mapDiff; @@ -1824,7 +1826,7 @@ private static final class SnapshotInProgressDiff implements NamedDiff { } SnapshotInProgressDiff(StreamInput in) throws IOException { - if (in.getTransportVersion().before(TransportVersions.PROJECT_ID_IN_SNAPSHOT)) { + if (in.getTransportVersion().supports(PROJECT_ID_IN_SNAPSHOT) == false) { final var oldMapDiff = DiffableUtils.readJdkMapDiff( in, DiffableUtils.getStringKeySerializer(), @@ -1875,13 +1877,13 @@ public String getWriteableName() { public void writeTo(StreamOutput out) throws IOException { assert after != null : "should only write instances that were diffed from this node's state"; if (out.getTransportVersion().onOrAfter(DIFFABLE_VERSION)) { - if (out.getTransportVersion().before(TransportVersions.PROJECT_ID_IN_SNAPSHOT)) { + if (out.getTransportVersion().supports(PROJECT_ID_IN_SNAPSHOT) == false) { DiffableUtils.jdkMapDiffWithUpdatedKeys(mapDiff, projectRepo -> { if (ProjectId.DEFAULT.equals(projectRepo.projectId()) == false) { final var message = "Cannot write instance with non-default project id " + projectRepo.projectId() + " to version before " - + TransportVersions.PROJECT_ID_IN_SNAPSHOT; + + PROJECT_ID_IN_SNAPSHOT; assert false : message; throw new IllegalArgumentException(message); } diff --git a/server/src/main/java/org/elasticsearch/cluster/block/ClusterBlocks.java b/server/src/main/java/org/elasticsearch/cluster/block/ClusterBlocks.java index ea1400fa67b46..41eb248fbaa8c 100644 --- a/server/src/main/java/org/elasticsearch/cluster/block/ClusterBlocks.java +++ b/server/src/main/java/org/elasticsearch/cluster/block/ClusterBlocks.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.block; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.Diffable; import org.elasticsearch.cluster.SimpleDiffable; @@ -46,6 +45,7 @@ public class ClusterBlocks implements Diffable { public static final ClusterBlocks EMPTY_CLUSTER_BLOCK = new ClusterBlocks(Set.of(), Map.of()); + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); private static final TransportVersion PROJECT_DELETION_GLOBAL_BLOCK = TransportVersion.fromName("project_deletion_global_block"); private final Set global; @@ -396,7 +396,7 @@ public String toString() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT)) { writeBlockSet(global, out); out.writeMap(projectBlocksMap, (o, projectId) -> projectId.writeTo(o), (o, projectBlocks) -> projectBlocks.writeTo(out)); } else { @@ -471,7 +471,7 @@ public ClusterBlocks apply(ClusterBlocks part) { */ @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT)) { out.writeBoolean(true); part.writeTo(out); } else { @@ -492,7 +492,7 @@ private static void writeBlockSet(Set blocks, StreamOutput out) th } public static ClusterBlocks readFrom(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT)) { final Set global = readBlockSet(in); final Map projectBlocksMap = in.readImmutableMap(ProjectId::readFrom, ProjectBlocks::readFrom); if (global.isEmpty() @@ -524,7 +524,7 @@ private static Set readBlockSet(StreamInput in) throws IOException public static Diff readDiffFrom(StreamInput in) throws IOException { if (in.readBoolean()) { - if (in.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT)) { return new ClusterBlocksDiff(ClusterBlocks.readFrom(in), false); } else { return new ClusterBlocksDiff(ClusterBlocks.readFromSingleProjectNode(in), true); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java index 3207f7b9f8b0b..253440f078d44 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java @@ -152,6 +152,8 @@ public class IndexMetadata implements Diffable, ToXContentFragmen // 'event.ingested' (part of Elastic Common Schema) range is tracked in cluster state, along with @timestamp public static final String EVENT_INGESTED_FIELD_NAME = "event.ingested"; + private static final TransportVersion INDEX_RESHARDING_METADATA = TransportVersion.fromName("index_resharding_metadata"); + @Nullable public String getDownsamplingInterval() { return settings.get(IndexMetadata.INDEX_DOWNSAMPLE_INTERVAL_KEY); @@ -1810,7 +1812,7 @@ private static class IndexMetadataDiff implements Diff { } else { eventIngestedRange = IndexLongFieldRange.UNKNOWN; } - if (in.getTransportVersion().onOrAfter(TransportVersions.INDEX_RESHARDING_METADATA)) { + if (in.getTransportVersion().supports(INDEX_RESHARDING_METADATA)) { reshardingMetadata = in.readOptionalWriteable(IndexReshardingMetadata::new); } else { reshardingMetadata = null; @@ -1853,7 +1855,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalLong(shardSizeInBytesForecast); } eventIngestedRange.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.INDEX_RESHARDING_METADATA)) { + if (out.getTransportVersion().supports(INDEX_RESHARDING_METADATA)) { out.writeOptionalWriteable(reshardingMetadata); } } @@ -1960,7 +1962,7 @@ public static IndexMetadata readFrom(StreamInput in, @Nullable Function shardsWriteLoad, List shardsUptimeInMillis, @@ -146,8 +152,8 @@ public IndexWriteLoad(StreamInput in) throws IOException { this( in.readDoubleArray(), in.readLongArray(), - in.getTransportVersion().onOrAfter(INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD) ? in.readDoubleArray() : null, - in.getTransportVersion().onOrAfter(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD) ? in.readDoubleArray() : null + in.getTransportVersion().supports(INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD) ? in.readDoubleArray() : null, + in.getTransportVersion().supports(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD) ? in.readDoubleArray() : null ); } @@ -155,10 +161,10 @@ public IndexWriteLoad(StreamInput in) throws IOException { public void writeTo(StreamOutput out) throws IOException { out.writeDoubleArray(shardWriteLoad); out.writeLongArray(shardUptimeInMillis); - if (out.getTransportVersion().onOrAfter(INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD)) { + if (out.getTransportVersion().supports(INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD)) { out.writeDoubleArray(shardRecentWriteLoad); } - if (out.getTransportVersion().onOrAfter(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD)) { + if (out.getTransportVersion().supports(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD)) { out.writeDoubleArray(shardPeakWriteLoad); } } diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java index a8372cd07be25..68369866865f3 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java @@ -11,7 +11,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.Diffable; @@ -219,6 +219,8 @@ public MetadataCustom read(StreamInput in, String key) throws IOException { } }; + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + private final String clusterUUID; private final boolean clusterUUIDCommitted; private final long version; @@ -956,7 +958,7 @@ private MetadataDiff(StreamInput in) throws IOException { // (1) If the diff is read from an old node, it is already combined. // (2) If the diff is read from a new node, multiProject != null, which prevents it from being sent to old nodes. combinedTasksDiff = null; - if (in.getTransportVersion().before(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT) == false) { fromNodeBeforeMultiProjectsSupport = true; var indices = DiffableUtils.readImmutableOpenMapDiff( in, @@ -1039,7 +1041,7 @@ public void writeTo(StreamOutput out) throws IOException { transientSettings.writeTo(out); persistentSettings.writeTo(out); hashesOfConsistentSettings.writeTo(out); - if (out.getTransportVersion().before(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT) == false) { // there's only ever a single project with pre-multi-project if (multiProject != null) { throw new UnsupportedOperationException( @@ -1180,7 +1182,7 @@ public static Metadata readFrom(StreamInput in) throws IOException { builder.transientSettings(readSettingsFromStream(in)); builder.persistentSettings(readSettingsFromStream(in)); builder.hashesOfConsistentSettings(DiffableStringMap.readFrom(in)); - if (in.getTransportVersion().before(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT) == false) { final ProjectMetadata.Builder projectBuilder = ProjectMetadata.builder(ProjectId.DEFAULT); builder.put(projectBuilder); final Function mappingLookup; @@ -1267,7 +1269,7 @@ public void writeTo(StreamOutput out) throws IOException { transientSettings.writeTo(out); persistentSettings.writeTo(out); hashesOfConsistentSettings.writeTo(out); - if (out.getTransportVersion().before(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT) == false) { ProjectMetadata singleProject = getSingleProject(); out.writeMapValues(singleProject.getMappingsByHash()); out.writeVInt(singleProject.size()); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java index 4939b15e65e99..06c21c6d13c63 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java @@ -11,7 +11,6 @@ import org.apache.lucene.util.CollectionUtil; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.Diffable; import org.elasticsearch.cluster.DiffableUtils; @@ -88,6 +87,7 @@ public class ProjectMetadata implements Iterable, Diffable PROJECT_CUSTOM_VALUE_SERIALIZER = new NamedDiffableValueSerializer<>(Metadata.ProjectCustom.class); + private static final TransportVersion PROJECT_METADATA_SETTINGS = TransportVersion.fromName("project_metadata_settings"); private static final TransportVersion CLUSTER_STATE_PROJECTS_SETTINGS = TransportVersion.fromName("cluster_state_projects_settings"); private static final TransportVersion PROJECT_RESERVED_STATE_MOVE_TO_REGISTRY = TransportVersion.fromName( "project_reserved_state_move_to_registry" @@ -2184,7 +2184,7 @@ public static ProjectMetadata readFrom(StreamInput in) throws IOException { } } - if (in.getTransportVersion().supports(TransportVersions.PROJECT_METADATA_SETTINGS) + if (in.getTransportVersion().supports(PROJECT_METADATA_SETTINGS) && in.getTransportVersion().supports(CLUSTER_STATE_PROJECTS_SETTINGS) == false) { Settings.readSettingsFromStream(in); } @@ -2222,7 +2222,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeCollection(Collections.emptySet()); } - if (out.getTransportVersion().supports(TransportVersions.PROJECT_METADATA_SETTINGS) + if (out.getTransportVersion().supports(PROJECT_METADATA_SETTINGS) && out.getTransportVersion().supports(CLUSTER_STATE_PROJECTS_SETTINGS) == false) { Settings.EMPTY.writeTo(out); } @@ -2274,7 +2274,7 @@ private ProjectMetadataDiff(ProjectMetadata before, ProjectMetadata after) { if (in.getTransportVersion().supports(PROJECT_RESERVED_STATE_MOVE_TO_REGISTRY) == false) { DiffableUtils.readImmutableOpenMapDiff(in, DiffableUtils.getStringKeySerializer(), RESERVED_DIFF_VALUE_READER); } - if (in.getTransportVersion().supports(TransportVersions.PROJECT_METADATA_SETTINGS) + if (in.getTransportVersion().supports(PROJECT_METADATA_SETTINGS) && in.getTransportVersion().supports(CLUSTER_STATE_PROJECTS_SETTINGS) == false) { Settings.readSettingsDiffFromStream(in); } @@ -2300,7 +2300,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().supports(PROJECT_RESERVED_STATE_MOVE_TO_REGISTRY) == false) { DiffableUtils.emptyDiff().writeTo(out); } - if (out.getTransportVersion().supports(TransportVersions.PROJECT_METADATA_SETTINGS) + if (out.getTransportVersion().supports(PROJECT_METADATA_SETTINGS) && out.getTransportVersion().supports(CLUSTER_STATE_PROJECTS_SETTINGS) == false) { Settings.EMPTY_DIFF.writeTo(out); } diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/GlobalRoutingTable.java b/server/src/main/java/org/elasticsearch/cluster/routing/GlobalRoutingTable.java index c6899b34cf577..317adce1fefb7 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/GlobalRoutingTable.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/GlobalRoutingTable.java @@ -9,7 +9,7 @@ package org.elasticsearch.cluster.routing; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.Diffable; import org.elasticsearch.cluster.DiffableUtils; @@ -316,6 +316,8 @@ private static class GlobalRoutingTableDiff implements Diff private static final DiffableUtils.DiffableValueReader DIFF_VALUE_READER = new DiffableUtils.DiffableValueReader<>(RoutingTable::readFrom, RoutingTable::readDiffFrom); + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + private final Diff> routingTable; private final Diff singleProjectForBwc; @@ -331,7 +333,7 @@ private static class GlobalRoutingTableDiff implements Diff } GlobalRoutingTableDiff(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT)) { this.routingTable = DiffableUtils.readImmutableOpenMapDiff(in, PROJECT_ID_KEY_SERIALIZER, DIFF_VALUE_READER); this.singleProjectForBwc = null; } else { @@ -364,7 +366,7 @@ public GlobalRoutingTable apply(GlobalRoutingTable part) { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT)) { routingTable.writeTo(out); } else { if (singleProjectForBwc != null) { diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/UnassignedInfo.java b/server/src/main/java/org/elasticsearch/cluster/routing/UnassignedInfo.java index 5ffc258ef8d85..e1ca713e9fe73 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/UnassignedInfo.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/UnassignedInfo.java @@ -91,6 +91,8 @@ public record UnassignedInfo( Property.IndexScope ); + private static final TransportVersion UNASSIGENEDINFO_RESHARD_ADDED = TransportVersion.fromName("unassignedinfo_reshard_added"); + /** * Reason why the shard is in unassigned state. *

@@ -328,14 +330,13 @@ public static UnassignedInfo fromStreamInput(StreamInput in) throws IOException public void writeTo(StreamOutput out) throws IOException { if (reason.equals(Reason.UNPROMOTABLE_REPLICA) && out.getTransportVersion().before(VERSION_UNPROMOTABLE_REPLICA_ADDED)) { out.writeByte((byte) Reason.PRIMARY_FAILED.ordinal()); - } else if (reason.equals(Reason.RESHARD_ADDED) - && out.getTransportVersion().before(TransportVersions.UNASSIGENEDINFO_RESHARD_ADDED)) { - // We should have protection to ensure we do not reshard in mixed clusters - assert false; - out.writeByte((byte) Reason.FORCED_EMPTY_PRIMARY.ordinal()); - } else { - out.writeByte((byte) reason.ordinal()); - } + } else if (reason.equals(Reason.RESHARD_ADDED) && out.getTransportVersion().supports(UNASSIGENEDINFO_RESHARD_ADDED) == false) { + // We should have protection to ensure we do not reshard in mixed clusters + assert false; + out.writeByte((byte) Reason.FORCED_EMPTY_PRIMARY.ordinal()); + } else { + out.writeByte((byte) reason.ordinal()); + } out.writeLong(unassignedTimeMillis); // Do not serialize unassignedTimeNanos as System.nanoTime() cannot be compared across different JVMs out.writeBoolean(delayed); diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java index 7abcef56af5f0..fc8c96c6f3834 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java @@ -9,7 +9,7 @@ package org.elasticsearch.cluster.routing.allocation.command; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.metadata.Metadata; import org.elasticsearch.cluster.metadata.ProjectId; import org.elasticsearch.cluster.node.DiscoveryNode; @@ -89,6 +89,8 @@ protected void validate() { } } + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + protected final String index; protected final int shardId; protected final String node; @@ -108,7 +110,7 @@ protected AbstractAllocateAllocationCommand(StreamInput in) throws IOException { index = in.readString(); shardId = in.readVInt(); node = in.readString(); - if (in.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT)) { projectId = ProjectId.readFrom(in); } else { projectId = Metadata.DEFAULT_PROJECT_ID; @@ -120,7 +122,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeString(index); out.writeVInt(shardId); out.writeString(node); - if (out.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT)) { projectId.writeTo(out); } else { assert Metadata.DEFAULT_PROJECT_ID.equals(projectId) : projectId; diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java index f8d569e83330f..d3f5d3a8d3ef7 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/CancelAllocationCommand.java @@ -12,7 +12,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.metadata.Metadata; import org.elasticsearch.cluster.metadata.ProjectId; @@ -47,6 +47,8 @@ public class CancelAllocationCommand implements AllocationCommand { public static final String NAME = "cancel"; public static final ParseField COMMAND_NAME_FIELD = new ParseField(NAME); + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + private final String index; private final int shardId; private final String node; @@ -83,7 +85,7 @@ public CancelAllocationCommand(StreamInput in) throws IOException { shardId = in.readVInt(); node = in.readString(); allowPrimary = in.readBoolean(); - if (in.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT)) { projectId = ProjectId.readFrom(in); } else { projectId = Metadata.DEFAULT_PROJECT_ID; @@ -96,7 +98,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVInt(shardId); out.writeString(node); out.writeBoolean(allowPrimary); - if (out.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT)) { projectId.writeTo(out); } else { assert Metadata.DEFAULT_PROJECT_ID.equals(projectId) : projectId; diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java index a9efc705a9685..1a90a73c65233 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/command/MoveAllocationCommand.java @@ -10,7 +10,7 @@ package org.elasticsearch.cluster.routing.allocation.command; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.metadata.Metadata; import org.elasticsearch.cluster.metadata.ProjectId; import org.elasticsearch.cluster.node.DiscoveryNode; @@ -40,6 +40,8 @@ public class MoveAllocationCommand implements AllocationCommand { public static final String NAME = "move"; public static final ParseField COMMAND_NAME_FIELD = new ParseField(NAME); + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + private final String index; private final int shardId; private final String fromNode; @@ -68,7 +70,7 @@ public MoveAllocationCommand(StreamInput in) throws IOException { shardId = in.readVInt(); fromNode = in.readString(); toNode = in.readString(); - if (in.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (in.getTransportVersion().supports(MULTI_PROJECT)) { projectId = ProjectId.readFrom(in); } else { projectId = Metadata.DEFAULT_PROJECT_ID; @@ -81,7 +83,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVInt(shardId); out.writeString(fromNode); out.writeString(toNode); - if (out.getTransportVersion().onOrAfter(TransportVersions.MULTI_PROJECT)) { + if (out.getTransportVersion().supports(MULTI_PROJECT)) { projectId.writeTo(out); } else { assert Metadata.DEFAULT_PROJECT_ID.equals(projectId) : projectId; diff --git a/server/src/main/java/org/elasticsearch/common/io/stream/DelayableWriteable.java b/server/src/main/java/org/elasticsearch/common/io/stream/DelayableWriteable.java index ba66c2e9ae898..0f40326658771 100644 --- a/server/src/main/java/org/elasticsearch/common/io/stream/DelayableWriteable.java +++ b/server/src/main/java/org/elasticsearch/common/io/stream/DelayableWriteable.java @@ -10,7 +10,6 @@ package org.elasticsearch.common.io.stream; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.bytes.ReleasableBytesReference; import org.elasticsearch.common.compress.CompressorFactory; @@ -41,6 +40,9 @@ * {@link #asSerialized(Reader, NamedWriteableRegistry)}. */ public abstract class DelayableWriteable implements Writeable, Releasable { + + private static final TransportVersion COMPRESS_DELAYABLE_WRITEABLE = TransportVersion.fromName("compress_delayable_writeable"); + /** * Build a {@linkplain DelayableWriteable} that wraps an existing object * but is serialized so that deserializing it can be delayed. @@ -59,7 +61,7 @@ public static DelayableWriteable delayed(Writeable.Read reader, in.getTransportVersion(), in.namedWriteableRegistry(), - in.getTransportVersion().onOrAfter(TransportVersions.COMPRESS_DELAYABLE_WRITEABLE) + in.getTransportVersion().supports(COMPRESS_DELAYABLE_WRITEABLE) ? in.readReleasableBytesReference(in.readInt()) : in.readReleasableBytesReference() ); @@ -67,7 +69,7 @@ public static DelayableWriteable delayed(Writeable.Read public static DelayableWriteable referencing(Writeable.Reader reader, StreamInput in) throws IOException { try ( - ReleasableBytesReference serialized = in.getTransportVersion().onOrAfter(TransportVersions.COMPRESS_DELAYABLE_WRITEABLE) + ReleasableBytesReference serialized = in.getTransportVersion().supports(COMPRESS_DELAYABLE_WRITEABLE) ? in.readReleasableBytesReference(in.readInt()) : in.readReleasableBytesReference() ) { @@ -108,7 +110,7 @@ private Referencing(T reference) { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.COMPRESS_DELAYABLE_WRITEABLE)) { + if (out.getTransportVersion().supports(COMPRESS_DELAYABLE_WRITEABLE)) { out.writeWithSizePrefix(reference); } else { out.legacyWriteWithSizePrefix(reference); @@ -179,7 +181,7 @@ public void writeTo(StreamOutput out) throws IOException { * which is good because this is how shard request caching * works. */ - if (out.getTransportVersion().onOrAfter(TransportVersions.COMPRESS_DELAYABLE_WRITEABLE)) { + if (out.getTransportVersion().supports(COMPRESS_DELAYABLE_WRITEABLE)) { out.writeInt(serialized.length()); serialized.writeTo(out); } else { @@ -249,7 +251,7 @@ private static T deserialize( BytesReference serialized ) throws IOException { try ( - StreamInput in = serializedAtVersion.onOrAfter(TransportVersions.COMPRESS_DELAYABLE_WRITEABLE) + StreamInput in = serializedAtVersion.supports(COMPRESS_DELAYABLE_WRITEABLE) ? CompressorFactory.COMPRESSOR.threadLocalStreamInput(serialized.streamInput()) : serialized.streamInput() ) { diff --git a/server/src/main/java/org/elasticsearch/common/settings/ProjectSecrets.java b/server/src/main/java/org/elasticsearch/common/settings/ProjectSecrets.java index 2dc3a1c0ee961..0bf7ab4624a76 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/ProjectSecrets.java +++ b/server/src/main/java/org/elasticsearch/common/settings/ProjectSecrets.java @@ -10,7 +10,6 @@ package org.elasticsearch.common.settings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.AbstractNamedDiffable; import org.elasticsearch.cluster.NamedDiff; import org.elasticsearch.cluster.metadata.Metadata; @@ -41,6 +40,7 @@ public class ProjectSecrets extends AbstractNamedDiffable implements Metadata.ProjectCustom { public static final String TYPE = "project_state_secrets"; + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); private final SecureClusterStateSettings settings; @@ -73,7 +73,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.MULTI_PROJECT; + return MULTI_PROJECT; } @Override diff --git a/server/src/main/java/org/elasticsearch/health/node/DslErrorInfo.java b/server/src/main/java/org/elasticsearch/health/node/DslErrorInfo.java index 13d7dd6930f92..f465c7ed49759 100644 --- a/server/src/main/java/org/elasticsearch/health/node/DslErrorInfo.java +++ b/server/src/main/java/org/elasticsearch/health/node/DslErrorInfo.java @@ -9,7 +9,7 @@ package org.elasticsearch.health.node; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.metadata.ProjectId; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -24,6 +24,8 @@ */ public record DslErrorInfo(String indexName, long firstOccurrence, int retryCount, ProjectId projectId) implements Writeable { + private static final TransportVersion ADD_PROJECT_ID_TO_DSL_ERROR_INFO = TransportVersion.fromName("add_project_id_to_dsl_error_info"); + public DslErrorInfo(String indexName, long firstOccurrence, int retryCount) { this(indexName, firstOccurrence, retryCount, ProjectId.DEFAULT); } @@ -33,9 +35,7 @@ public DslErrorInfo(StreamInput in) throws IOException { in.readString(), in.readLong(), in.readVInt(), - in.getTransportVersion().onOrAfter(TransportVersions.ADD_PROJECT_ID_TO_DSL_ERROR_INFO) - ? ProjectId.readFrom(in) - : ProjectId.DEFAULT + in.getTransportVersion().supports(ADD_PROJECT_ID_TO_DSL_ERROR_INFO) ? ProjectId.readFrom(in) : ProjectId.DEFAULT ); } @@ -44,7 +44,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeString(indexName); out.writeLong(firstOccurrence); out.writeVInt(retryCount); - if (out.getTransportVersion().onOrAfter(TransportVersions.ADD_PROJECT_ID_TO_DSL_ERROR_INFO)) { + if (out.getTransportVersion().supports(ADD_PROJECT_ID_TO_DSL_ERROR_INFO)) { projectId.writeTo(out); } } diff --git a/server/src/main/java/org/elasticsearch/health/node/HealthInfo.java b/server/src/main/java/org/elasticsearch/health/node/HealthInfo.java index 005a2d12acff6..db55c8c4b4cbe 100644 --- a/server/src/main/java/org/elasticsearch/health/node/HealthInfo.java +++ b/server/src/main/java/org/elasticsearch/health/node/HealthInfo.java @@ -9,6 +9,7 @@ package org.elasticsearch.health.node; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -40,6 +41,8 @@ public record HealthInfo( public static final HealthInfo EMPTY_HEALTH_INFO = new HealthInfo(Map.of(), NO_DSL_ERRORS, Map.of(), INDETERMINATE); + private static final TransportVersion FILE_SETTINGS_HEALTH_INFO = TransportVersion.fromName("file_settings_health_info"); + public HealthInfo { requireNonNull(fileSettingsHealthInfo); } @@ -51,7 +54,7 @@ public HealthInfo(StreamInput input) throws IOException { ? input.readOptionalWriteable(DataStreamLifecycleHealthInfo::new) : null, input.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0) ? input.readMap(RepositoriesHealthInfo::new) : Map.of(), - input.getTransportVersion().onOrAfter(TransportVersions.FILE_SETTINGS_HEALTH_INFO) + input.getTransportVersion().supports(FILE_SETTINGS_HEALTH_INFO) ? input.readOptionalWriteable(FileSettingsHealthInfo::new) : INDETERMINATE ); @@ -66,7 +69,7 @@ public void writeTo(StreamOutput output) throws IOException { if (output.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { output.writeMap(repositoriesInfoByNode, StreamOutput::writeWriteable); } - if (output.getTransportVersion().onOrAfter(TransportVersions.FILE_SETTINGS_HEALTH_INFO)) { + if (output.getTransportVersion().supports(FILE_SETTINGS_HEALTH_INFO)) { output.writeOptionalWriteable(fileSettingsHealthInfo); } } diff --git a/server/src/main/java/org/elasticsearch/health/node/UpdateHealthInfoCacheAction.java b/server/src/main/java/org/elasticsearch/health/node/UpdateHealthInfoCacheAction.java index 2547eadc03409..52c84fc3b130c 100644 --- a/server/src/main/java/org/elasticsearch/health/node/UpdateHealthInfoCacheAction.java +++ b/server/src/main/java/org/elasticsearch/health/node/UpdateHealthInfoCacheAction.java @@ -9,6 +9,7 @@ package org.elasticsearch.health.node; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.ActionRequestValidationException; @@ -42,6 +43,8 @@ public class UpdateHealthInfoCacheAction extends ActionType { private static final Logger logger = LogManager.getLogger(UpdateHealthInfoCacheAction.class); + private static final TransportVersion FILE_SETTINGS_HEALTH_INFO = TransportVersion.fromName("file_settings_health_info"); + public static class Request extends HealthNodeRequest { private final String nodeId; @Nullable @@ -92,7 +95,7 @@ public Request(StreamInput in) throws IOException { this.repositoriesHealthInfo = in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0) ? in.readOptionalWriteable(RepositoriesHealthInfo::new) : null; - this.fileSettingsHealthInfo = in.getTransportVersion().onOrAfter(TransportVersions.FILE_SETTINGS_HEALTH_INFO) + this.fileSettingsHealthInfo = in.getTransportVersion().supports(FILE_SETTINGS_HEALTH_INFO) ? in.readOptionalWriteable(FileSettingsService.FileSettingsHealthInfo::new) : null; } else { @@ -143,7 +146,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { out.writeOptionalWriteable(repositoriesHealthInfo); } - if (out.getTransportVersion().onOrAfter(TransportVersions.FILE_SETTINGS_HEALTH_INFO)) { + if (out.getTransportVersion().supports(FILE_SETTINGS_HEALTH_INFO)) { out.writeOptionalWriteable(fileSettingsHealthInfo); } } else { diff --git a/server/src/main/java/org/elasticsearch/index/shard/DenseVectorStats.java b/server/src/main/java/org/elasticsearch/index/shard/DenseVectorStats.java index e60f325e2f5b1..b289c51617c71 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/DenseVectorStats.java +++ b/server/src/main/java/org/elasticsearch/index/shard/DenseVectorStats.java @@ -10,7 +10,7 @@ package org.elasticsearch.index.shard; import org.apache.lucene.codecs.KnnVectorsReader; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; @@ -29,6 +29,9 @@ * Statistics about indexed dense vector */ public class DenseVectorStats implements Writeable, ToXContentFragment { + + private static final TransportVersion DENSE_VECTOR_OFF_HEAP_STATS = TransportVersion.fromName("dense_vector_off_heap_stats"); + private long valueCount = 0; /** Per-field off-heap desired memory byte size, categorized by file extension. */ @@ -47,7 +50,7 @@ public DenseVectorStats(long count, Map> offHeapStats) public DenseVectorStats(StreamInput in) throws IOException { this.valueCount = in.readVLong(); - if (in.getTransportVersion().onOrAfter(TransportVersions.DENSE_VECTOR_OFF_HEAP_STATS)) { + if (in.getTransportVersion().supports(DENSE_VECTOR_OFF_HEAP_STATS)) { this.offHeapStats = readOptionalOffHeapStats(in); } } @@ -55,7 +58,7 @@ public DenseVectorStats(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { out.writeVLong(valueCount); - if (out.getTransportVersion().onOrAfter(TransportVersions.DENSE_VECTOR_OFF_HEAP_STATS)) { + if (out.getTransportVersion().supports(DENSE_VECTOR_OFF_HEAP_STATS)) { writeOptionalOffHeapStats(out); } } diff --git a/server/src/main/java/org/elasticsearch/index/shard/IndexingStats.java b/server/src/main/java/org/elasticsearch/index/shard/IndexingStats.java index 18df167687d90..43a7e8b75fbb7 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/IndexingStats.java +++ b/server/src/main/java/org/elasticsearch/index/shard/IndexingStats.java @@ -25,14 +25,20 @@ import java.util.Objects; import java.util.concurrent.TimeUnit; -import static org.elasticsearch.TransportVersions.INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD; -import static org.elasticsearch.TransportVersions.INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD; -import static org.elasticsearch.TransportVersions.WRITE_LOAD_INCLUDES_BUFFER_WRITES; - public class IndexingStats implements Writeable, ToXContentFragment { public static class Stats implements Writeable, ToXContentFragment { + + private static final TransportVersion INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD = TransportVersion.fromName( + "indexing_stats_includes_recent_write_load" + ); + private static final TransportVersion INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD = TransportVersion.fromName( + "index_stats_and_metadata_include_peak_write_load" + ); private static final TransportVersion WRITE_LOAD_AVG_SUPPORTED_VERSION = TransportVersions.V_8_6_0; + private static final TransportVersion WRITE_LOAD_INCLUDES_BUFFER_WRITES = TransportVersion.fromName( + "write_load_includes_buffer_writes" + ); private long indexCount; private long indexTimeInMillis; @@ -74,7 +80,7 @@ public Stats(StreamInput in) throws IOException { totalIndexingTimeSinceShardStartedInNanos = in.readLong(); totalActiveTimeInNanos = in.readLong(); } - if (in.getTransportVersion().onOrAfter(INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD)) { + if (in.getTransportVersion().supports(INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD)) { recentIndexingLoad = in.readDouble(); } else { // When getting stats from an older version which doesn't have the recent indexing load, better to fall back to the @@ -83,7 +89,7 @@ public Stats(StreamInput in) throws IOException { ? (double) totalIndexingTimeSinceShardStartedInNanos / totalActiveTimeInNanos : 0; } - if (in.getTransportVersion().onOrAfter(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD)) { + if (in.getTransportVersion().supports(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD)) { peakIndexingLoad = in.readDouble(); } else { // When getting stats from an older version which doesn't have the recent indexing load, better to fall back to the @@ -92,7 +98,7 @@ public Stats(StreamInput in) throws IOException { ? (double) totalIndexingTimeSinceShardStartedInNanos / totalActiveTimeInNanos : 0; } - if (in.getTransportVersion().onOrAfter(WRITE_LOAD_INCLUDES_BUFFER_WRITES)) { + if (in.getTransportVersion().supports(WRITE_LOAD_INCLUDES_BUFFER_WRITES)) { totalIndexingExecutionTimeSinceShardStartedInNanos = in.readLong(); } else { // When getting stats from an older version which doesn't have the more accurate indexing execution time, @@ -314,13 +320,13 @@ public void writeTo(StreamOutput out) throws IOException { out.writeLong(totalIndexingTimeSinceShardStartedInNanos); out.writeLong(totalActiveTimeInNanos); } - if (out.getTransportVersion().onOrAfter(INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD)) { + if (out.getTransportVersion().supports(INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD)) { out.writeDouble(recentIndexingLoad); } - if (out.getTransportVersion().onOrAfter(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD)) { + if (out.getTransportVersion().supports(INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD)) { out.writeDouble(peakIndexingLoad); } - if (out.getTransportVersion().onOrAfter(WRITE_LOAD_INCLUDES_BUFFER_WRITES)) { + if (out.getTransportVersion().supports(WRITE_LOAD_INCLUDES_BUFFER_WRITES)) { out.writeLong(totalIndexingExecutionTimeSinceShardStartedInNanos); } } diff --git a/server/src/main/java/org/elasticsearch/index/stats/IndexingPressureStats.java b/server/src/main/java/org/elasticsearch/index/stats/IndexingPressureStats.java index 2779207132091..005028c94d17a 100644 --- a/server/src/main/java/org/elasticsearch/index/stats/IndexingPressureStats.java +++ b/server/src/main/java/org/elasticsearch/index/stats/IndexingPressureStats.java @@ -9,6 +9,7 @@ package org.elasticsearch.index.stats; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -21,6 +22,10 @@ public class IndexingPressureStats implements Writeable, ToXContentFragment { + private static final TransportVersion MAX_OPERATION_SIZE_REJECTIONS_ADDED = TransportVersion.fromName( + "max_operation_size_rejections_added" + ); + private final long totalCombinedCoordinatingAndPrimaryBytes; private final long totalCoordinatingBytes; private final long totalPrimaryBytes; @@ -98,7 +103,7 @@ public IndexingPressureStats(StreamInput in) throws IOException { highWaterMarkSplits = -1L; } - if (in.getTransportVersion().onOrAfter(TransportVersions.MAX_OPERATION_SIZE_REJECTIONS_ADDED)) { + if (in.getTransportVersion().supports(MAX_OPERATION_SIZE_REJECTIONS_ADDED)) { largeOpsRejections = in.readVLong(); totalLargeRejectedOpsBytes = in.readVLong(); } else { @@ -193,7 +198,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVLong(highWaterMarkSplits); } - if (out.getTransportVersion().onOrAfter(TransportVersions.MAX_OPERATION_SIZE_REJECTIONS_ADDED)) { + if (out.getTransportVersion().supports(MAX_OPERATION_SIZE_REJECTIONS_ADDED)) { out.writeVLong(largeOpsRejections); out.writeVLong(totalLargeRejectedOpsBytes); } diff --git a/server/src/main/java/org/elasticsearch/indices/NodeIndicesStats.java b/server/src/main/java/org/elasticsearch/indices/NodeIndicesStats.java index 83add510c6b0f..36655d8a27cf7 100644 --- a/server/src/main/java/org/elasticsearch/indices/NodeIndicesStats.java +++ b/server/src/main/java/org/elasticsearch/indices/NodeIndicesStats.java @@ -65,6 +65,9 @@ public class NodeIndicesStats implements Writeable, ChunkedToXContent { private static final TransportVersion VERSION_SUPPORTING_STATS_BY_INDEX = TransportVersions.V_8_5_0; + private static final TransportVersion NODES_STATS_SUPPORTS_MULTI_PROJECT = TransportVersion.fromName( + "nodes_stats_supports_multi_project" + ); private static final Map> EMPTY_STATS_BY_SHARD = Map.of(); private final CommonStats stats; @@ -93,7 +96,7 @@ public NodeIndicesStats(StreamInput in) throws IOException { statsByIndex = new HashMap<>(); } - if (in.getTransportVersion().onOrAfter(TransportVersions.NODES_STATS_SUPPORTS_MULTI_PROJECT)) { + if (in.getTransportVersion().supports(NODES_STATS_SUPPORTS_MULTI_PROJECT)) { projectsByIndex = in.readMap(Index::new, ProjectId::readFrom); } else { // Older nodes do not include the index-to-project map, so we leave it empty. This means all indices will be treated as if the @@ -243,7 +246,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(VERSION_SUPPORTING_STATS_BY_INDEX)) { out.writeMap(statsByIndex); } - if (out.getTransportVersion().onOrAfter(TransportVersions.NODES_STATS_SUPPORTS_MULTI_PROJECT)) { + if (out.getTransportVersion().supports(NODES_STATS_SUPPORTS_MULTI_PROJECT)) { out.writeMap(projectsByIndex); } } diff --git a/server/src/main/java/org/elasticsearch/ingest/IngestStats.java b/server/src/main/java/org/elasticsearch/ingest/IngestStats.java index 686c350d267cd..00f8e215994e6 100644 --- a/server/src/main/java/org/elasticsearch/ingest/IngestStats.java +++ b/server/src/main/java/org/elasticsearch/ingest/IngestStats.java @@ -9,6 +9,7 @@ package org.elasticsearch.ingest; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.action.admin.cluster.node.stats.NodeStats; import org.elasticsearch.cluster.metadata.Metadata; @@ -49,6 +50,10 @@ public record IngestStats( public static final IngestStats IDENTITY = new IngestStats(Stats.IDENTITY, List.of(), Map.of()); + private static final TransportVersion NODES_STATS_SUPPORTS_MULTI_PROJECT = TransportVersion.fromName( + "nodes_stats_supports_multi_project" + ); + /** * @param totalStats - The total stats for Ingest. This is logically the sum of all pipeline stats, * and pipeline stats are logically the sum of the processor stats. @@ -77,7 +82,7 @@ public static IngestStats read(StreamInput in) throws IOException { Map>> processorStats = new HashMap<>(); for (var i = 0; i < size; i++) { - ProjectId projectId = in.getTransportVersion().onOrAfter(TransportVersions.NODES_STATS_SUPPORTS_MULTI_PROJECT) + ProjectId projectId = in.getTransportVersion().supports(NODES_STATS_SUPPORTS_MULTI_PROJECT) ? ProjectId.readFrom(in) // We will not have older nodes in a multi-project cluster, so we can assume that everything is in the default project. : Metadata.DEFAULT_PROJECT_ID; @@ -107,7 +112,7 @@ public void writeTo(StreamOutput out) throws IOException { totalStats.writeTo(out); out.writeVInt(pipelineStats.size()); for (PipelineStat pipelineStat : pipelineStats) { - if (out.getTransportVersion().onOrAfter(TransportVersions.NODES_STATS_SUPPORTS_MULTI_PROJECT)) { + if (out.getTransportVersion().supports(NODES_STATS_SUPPORTS_MULTI_PROJECT)) { pipelineStat.projectId().writeTo(out); } out.writeString(pipelineStat.pipelineId()); diff --git a/server/src/main/java/org/elasticsearch/repositories/RepositoryConflictException.java b/server/src/main/java/org/elasticsearch/repositories/RepositoryConflictException.java index ded406c9828db..05a45f67b5941 100644 --- a/server/src/main/java/org/elasticsearch/repositories/RepositoryConflictException.java +++ b/server/src/main/java/org/elasticsearch/repositories/RepositoryConflictException.java @@ -9,7 +9,7 @@ package org.elasticsearch.repositories; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.rest.RestStatus; @@ -20,6 +20,11 @@ * Repository conflict exception */ public class RepositoryConflictException extends RepositoryException { + + private static final TransportVersion REMOVE_REPOSITORY_CONFLICT_MESSAGE = TransportVersion.fromName( + "remove_repository_conflict_message" + ); + public RepositoryConflictException(String repository, String message) { super(repository, message); } @@ -31,7 +36,7 @@ public RestStatus status() { public RepositoryConflictException(StreamInput in) throws IOException { super(in); - if (in.getTransportVersion().before(TransportVersions.REMOVE_REPOSITORY_CONFLICT_MESSAGE)) { + if (in.getTransportVersion().supports(REMOVE_REPOSITORY_CONFLICT_MESSAGE) == false) { // Deprecated `backwardCompatibleMessage` field in.readString(); } @@ -40,7 +45,7 @@ public RepositoryConflictException(StreamInput in) throws IOException { @Override protected void writeTo(StreamOutput out, Writer nestedExceptionsWriter) throws IOException { super.writeTo(out, nestedExceptionsWriter); - if (out.getTransportVersion().before(TransportVersions.REMOVE_REPOSITORY_CONFLICT_MESSAGE)) { + if (out.getTransportVersion().supports(REMOVE_REPOSITORY_CONFLICT_MESSAGE) == false) { // Deprecated `backwardCompatibleMessage` field out.writeString(""); } diff --git a/server/src/main/java/org/elasticsearch/search/SearchHit.java b/server/src/main/java/org/elasticsearch/search/SearchHit.java index 9a8d0bf4ecffd..31429dd91d9a9 100644 --- a/server/src/main/java/org/elasticsearch/search/SearchHit.java +++ b/server/src/main/java/org/elasticsearch/search/SearchHit.java @@ -11,6 +11,7 @@ import org.apache.lucene.search.Explanation; import org.elasticsearch.ElasticsearchParseException; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesArray; @@ -66,6 +67,8 @@ */ public final class SearchHit implements Writeable, ToXContentObject, RefCounted { + private static final TransportVersion DOC_FIELDS_AS_LIST = TransportVersion.fromName("doc_fields_as_list"); + private final transient int docId; static final float DEFAULT_SCORE = Float.NaN; @@ -218,7 +221,7 @@ public static SearchHit readFrom(StreamInput in, boolean pooled) throws IOExcept } final Map documentFields; final Map metaFields; - if (in.getTransportVersion().onOrAfter(TransportVersions.DOC_FIELDS_AS_LIST)) { + if (in.getTransportVersion().supports(DOC_FIELDS_AS_LIST)) { documentFields = DocumentField.readFieldsFromMapValues(in); metaFields = DocumentField.readFieldsFromMapValues(in); } else { @@ -329,7 +332,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(true); writeExplanation(out, explanation); } - if (out.getTransportVersion().onOrAfter(TransportVersions.DOC_FIELDS_AS_LIST)) { + if (out.getTransportVersion().supports(DOC_FIELDS_AS_LIST)) { out.writeMapValues(documentFields); out.writeMapValues(metaFields); } else { diff --git a/server/src/main/java/org/elasticsearch/snapshots/Snapshot.java b/server/src/main/java/org/elasticsearch/snapshots/Snapshot.java index 208cd4bcbef84..b2c92fe882a94 100644 --- a/server/src/main/java/org/elasticsearch/snapshots/Snapshot.java +++ b/server/src/main/java/org/elasticsearch/snapshots/Snapshot.java @@ -9,7 +9,7 @@ package org.elasticsearch.snapshots; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.metadata.ProjectId; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -24,6 +24,8 @@ */ public final class Snapshot implements Writeable { + private static final TransportVersion PROJECT_ID_IN_SNAPSHOT = TransportVersion.fromName("project_id_in_snapshot"); + private final ProjectId projectId; private final String repository; private final SnapshotId snapshotId; @@ -52,7 +54,7 @@ public Snapshot(ProjectId projectId, final String repository, final SnapshotId s * Constructs a snapshot from the stream input. */ public Snapshot(final StreamInput in) throws IOException { - if (in.getTransportVersion().before(TransportVersions.PROJECT_ID_IN_SNAPSHOT)) { + if (in.getTransportVersion().supports(PROJECT_ID_IN_SNAPSHOT) == false) { projectId = ProjectId.DEFAULT; } else { projectId = ProjectId.readFrom(in); @@ -108,12 +110,12 @@ private int computeHashCode() { @Override public void writeTo(final StreamOutput out) throws IOException { - if (out.getTransportVersion().before(TransportVersions.PROJECT_ID_IN_SNAPSHOT)) { + if (out.getTransportVersion().supports(PROJECT_ID_IN_SNAPSHOT) == false) { if (ProjectId.DEFAULT.equals(projectId) == false) { final var message = "Cannot write instance with non-default project id " + projectId + " to version before " - + TransportVersions.PROJECT_ID_IN_SNAPSHOT; + + PROJECT_ID_IN_SNAPSHOT; assert false : message; throw new IllegalArgumentException(message); } diff --git a/server/src/main/resources/transport/definitions/referable/add_project_id_to_dsl_error_info.csv b/server/src/main/resources/transport/definitions/referable/add_project_id_to_dsl_error_info.csv new file mode 100644 index 0000000000000..9d4151a9a67eb --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/add_project_id_to_dsl_error_info.csv @@ -0,0 +1 @@ +9046000 diff --git a/server/src/main/resources/transport/definitions/referable/batched_query_execution_delayable_writeable.csv b/server/src/main/resources/transport/definitions/referable/batched_query_execution_delayable_writeable.csv new file mode 100644 index 0000000000000..0f0b1d51f2579 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/batched_query_execution_delayable_writeable.csv @@ -0,0 +1 @@ +9057000 diff --git a/server/src/main/resources/transport/definitions/referable/compress_delayable_writeable.csv b/server/src/main/resources/transport/definitions/referable/compress_delayable_writeable.csv new file mode 100644 index 0000000000000..2ca20b8f30118 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/compress_delayable_writeable.csv @@ -0,0 +1 @@ +9059000 diff --git a/server/src/main/resources/transport/definitions/referable/dense_vector_off_heap_stats.csv b/server/src/main/resources/transport/definitions/referable/dense_vector_off_heap_stats.csv new file mode 100644 index 0000000000000..5bff3ccefb9a1 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/dense_vector_off_heap_stats.csv @@ -0,0 +1 @@ +9062000 diff --git a/server/src/main/resources/transport/definitions/referable/doc_fields_as_list.csv b/server/src/main/resources/transport/definitions/referable/doc_fields_as_list.csv new file mode 100644 index 0000000000000..e42dba825fc1c --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/doc_fields_as_list.csv @@ -0,0 +1 @@ +9061000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_driver_node_description.csv b/server/src/main/resources/transport/definitions/referable/esql_driver_node_description.csv new file mode 100644 index 0000000000000..0de7db6f27522 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_driver_node_description.csv @@ -0,0 +1 @@ +9017000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_field_attribute_drop_type.csv b/server/src/main/resources/transport/definitions/referable/esql_field_attribute_drop_type.csv new file mode 100644 index 0000000000000..db9d334d5cba7 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_field_attribute_drop_type.csv @@ -0,0 +1 @@ +9075000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_limit_row_size.csv b/server/src/main/resources/transport/definitions/referable/esql_limit_row_size.csv new file mode 100644 index 0000000000000..26605580c8c24 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_limit_row_size.csv @@ -0,0 +1 @@ +9085000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_lookup_join_source_text.csv b/server/src/main/resources/transport/definitions/referable/esql_lookup_join_source_text.csv new file mode 100644 index 0000000000000..a3a07f7152e73 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_lookup_join_source_text.csv @@ -0,0 +1 @@ +9008000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_profile_async_nanos.csv b/server/src/main/resources/transport/definitions/referable/esql_profile_async_nanos.csv new file mode 100644 index 0000000000000..023be513a611f --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_profile_async_nanos.csv @@ -0,0 +1 @@ +9007000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_remove_aggregate_type.csv b/server/src/main/resources/transport/definitions/referable/esql_remove_aggregate_type.csv new file mode 100644 index 0000000000000..9d5b1bcb34e24 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_remove_aggregate_type.csv @@ -0,0 +1 @@ +9045000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_serialize_source_functions_warnings.csv b/server/src/main/resources/transport/definitions/referable/esql_serialize_source_functions_warnings.csv new file mode 100644 index 0000000000000..8fb6d13acf145 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_serialize_source_functions_warnings.csv @@ -0,0 +1 @@ +9016000 diff --git a/server/src/main/resources/transport/definitions/referable/esql_thread_name_in_driver_profile.csv b/server/src/main/resources/transport/definitions/referable/esql_thread_name_in_driver_profile.csv new file mode 100644 index 0000000000000..a4f1f6ec82ac8 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_thread_name_in_driver_profile.csv @@ -0,0 +1 @@ +9027000 diff --git a/server/src/main/resources/transport/definitions/referable/file_settings_health_info.csv b/server/src/main/resources/transport/definitions/referable/file_settings_health_info.csv new file mode 100644 index 0000000000000..3481b595d62d7 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/file_settings_health_info.csv @@ -0,0 +1 @@ +9072000 diff --git a/server/src/main/resources/transport/definitions/referable/index_metadata_includes_recent_write_load.csv b/server/src/main/resources/transport/definitions/referable/index_metadata_includes_recent_write_load.csv new file mode 100644 index 0000000000000..babdc594c6d78 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/index_metadata_includes_recent_write_load.csv @@ -0,0 +1 @@ +9036000 diff --git a/server/src/main/resources/transport/definitions/referable/index_resharding_metadata.csv b/server/src/main/resources/transport/definitions/referable/index_resharding_metadata.csv new file mode 100644 index 0000000000000..65319c4c9f3ab --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/index_resharding_metadata.csv @@ -0,0 +1 @@ +9031000 diff --git a/server/src/main/resources/transport/definitions/referable/index_stats_and_metadata_include_peak_write_load.csv b/server/src/main/resources/transport/definitions/referable/index_stats_and_metadata_include_peak_write_load.csv new file mode 100644 index 0000000000000..e2d389c95199d --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/index_stats_and_metadata_include_peak_write_load.csv @@ -0,0 +1 @@ +9041000 diff --git a/server/src/main/resources/transport/definitions/referable/indexing_stats_includes_recent_write_load.csv b/server/src/main/resources/transport/definitions/referable/indexing_stats_includes_recent_write_load.csv new file mode 100644 index 0000000000000..4bf4ca2914b2b --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/indexing_stats_includes_recent_write_load.csv @@ -0,0 +1 @@ +9034000 diff --git a/server/src/main/resources/transport/definitions/referable/max_operation_size_rejections_added.csv b/server/src/main/resources/transport/definitions/referable/max_operation_size_rejections_added.csv new file mode 100644 index 0000000000000..bb8275837f461 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/max_operation_size_rejections_added.csv @@ -0,0 +1 @@ +9024000 diff --git a/server/src/main/resources/transport/definitions/referable/multi_project.csv b/server/src/main/resources/transport/definitions/referable/multi_project.csv new file mode 100644 index 0000000000000..f938df804fe38 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/multi_project.csv @@ -0,0 +1 @@ +9018000 diff --git a/server/src/main/resources/transport/definitions/referable/nodes_stats_supports_multi_project.csv b/server/src/main/resources/transport/definitions/referable/nodes_stats_supports_multi_project.csv new file mode 100644 index 0000000000000..2ad52fbf7ffcb --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/nodes_stats_supports_multi_project.csv @@ -0,0 +1 @@ +9079000 diff --git a/server/src/main/resources/transport/definitions/referable/project_id_in_snapshot.csv b/server/src/main/resources/transport/definitions/referable/project_id_in_snapshot.csv new file mode 100644 index 0000000000000..0995e81420972 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/project_id_in_snapshot.csv @@ -0,0 +1 @@ +9040000 diff --git a/server/src/main/resources/transport/definitions/referable/project_metadata_settings.csv b/server/src/main/resources/transport/definitions/referable/project_metadata_settings.csv new file mode 100644 index 0000000000000..51214b8b140d8 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/project_metadata_settings.csv @@ -0,0 +1 @@ +9066000 diff --git a/server/src/main/resources/transport/definitions/referable/remove_repository_conflict_message.csv b/server/src/main/resources/transport/definitions/referable/remove_repository_conflict_message.csv new file mode 100644 index 0000000000000..6a5c59c80231b --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/remove_repository_conflict_message.csv @@ -0,0 +1 @@ +9012000 diff --git a/server/src/main/resources/transport/definitions/referable/repo_analysis_copy_blob.csv b/server/src/main/resources/transport/definitions/referable/repo_analysis_copy_blob.csv new file mode 100644 index 0000000000000..9b62a24c7bf0f --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/repo_analysis_copy_blob.csv @@ -0,0 +1 @@ +9048000 diff --git a/server/src/main/resources/transport/definitions/referable/slm_unhealthy_if_no_snapshot_within.csv b/server/src/main/resources/transport/definitions/referable/slm_unhealthy_if_no_snapshot_within.csv new file mode 100644 index 0000000000000..c38648bde1f20 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/slm_unhealthy_if_no_snapshot_within.csv @@ -0,0 +1 @@ +9010000 diff --git a/server/src/main/resources/transport/definitions/referable/synonyms_refresh_param.csv b/server/src/main/resources/transport/definitions/referable/synonyms_refresh_param.csv new file mode 100644 index 0000000000000..53d5386f513fc --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/synonyms_refresh_param.csv @@ -0,0 +1 @@ +9060000 diff --git a/server/src/main/resources/transport/definitions/referable/unassignedinfo_reshard_added.csv b/server/src/main/resources/transport/definitions/referable/unassignedinfo_reshard_added.csv new file mode 100644 index 0000000000000..4f4f0e0ffbb09 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/unassignedinfo_reshard_added.csv @@ -0,0 +1 @@ +9022000 diff --git a/server/src/main/resources/transport/definitions/referable/write_load_includes_buffer_writes.csv b/server/src/main/resources/transport/definitions/referable/write_load_includes_buffer_writes.csv new file mode 100644 index 0000000000000..0d95bf3f53083 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/write_load_includes_buffer_writes.csv @@ -0,0 +1 @@ +9070000 diff --git a/server/src/main/resources/transport/definitions/unreferable/dead_batched_query_execution_delayable_writeable.csv b/server/src/main/resources/transport/definitions/unreferable/dead_batched_query_execution_delayable_writeable.csv new file mode 100644 index 0000000000000..76a4159c4b236 --- /dev/null +++ b/server/src/main/resources/transport/definitions/unreferable/dead_batched_query_execution_delayable_writeable.csv @@ -0,0 +1 @@ +9053000 diff --git a/server/src/main/resources/transport/definitions/unreferable/dead_esql_documents_found_and_values_loaded.csv b/server/src/main/resources/transport/definitions/unreferable/dead_esql_documents_found_and_values_loaded.csv new file mode 100644 index 0000000000000..5e64dc23fb95d --- /dev/null +++ b/server/src/main/resources/transport/definitions/unreferable/dead_esql_documents_found_and_values_loaded.csv @@ -0,0 +1 @@ +9052000 diff --git a/server/src/main/resources/transport/definitions/unreferable/dead_esql_time_series_source_status.csv b/server/src/main/resources/transport/definitions/unreferable/dead_esql_time_series_source_status.csv new file mode 100644 index 0000000000000..6c37e7cd37e77 --- /dev/null +++ b/server/src/main/resources/transport/definitions/unreferable/dead_esql_time_series_source_status.csv @@ -0,0 +1 @@ +9076000 diff --git a/server/src/test/java/org/elasticsearch/TransportVersionTests.java b/server/src/test/java/org/elasticsearch/TransportVersionTests.java index ca76f1a9495c6..eeea49dab260d 100644 --- a/server/src/test/java/org/elasticsearch/TransportVersionTests.java +++ b/server/src/test/java/org/elasticsearch/TransportVersionTests.java @@ -419,7 +419,7 @@ public void testTransportVersionsLocked() { "TransportVersions.java is locked. Generate transport versions with TransportVersion.fromName " + "and generateTransportVersion gradle task", TransportVersions.DEFINED_VERSIONS.getLast().id(), - equalTo(9_085_0_00) + equalTo(8_840_0_00) ); } } diff --git a/server/src/test/java/org/elasticsearch/action/synonyms/SynonymUpdateResponseSerializingTests.java b/server/src/test/java/org/elasticsearch/action/synonyms/SynonymUpdateResponseSerializingTests.java index c1a5b85783e51..fda47ea4134ed 100644 --- a/server/src/test/java/org/elasticsearch/action/synonyms/SynonymUpdateResponseSerializingTests.java +++ b/server/src/test/java/org/elasticsearch/action/synonyms/SynonymUpdateResponseSerializingTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.action.synonyms; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.admin.indices.analyze.ReloadAnalyzersResponse; import org.elasticsearch.action.admin.indices.analyze.ReloadAnalyzersResponseTests; import org.elasticsearch.common.Strings; @@ -58,6 +57,8 @@ public class SynonymUpdateResponseSerializingTests extends AbstractBWCSerializat ); } + private static final TransportVersion SYNONYMS_REFRESH_PARAM = TransportVersion.fromName("synonyms_refresh_param"); + @Override protected Writeable.Reader instanceReader() { return SynonymUpdateResponse::new; @@ -92,7 +93,7 @@ protected SynonymUpdateResponse mutateInstance(SynonymUpdateResponse instance) t @Override protected SynonymUpdateResponse mutateInstanceForVersion(SynonymUpdateResponse instance, TransportVersion version) { - if (version.before(TransportVersions.SYNONYMS_REFRESH_PARAM) && instance.reloadAnalyzersResponse() == null) { + if (version.supports(SYNONYMS_REFRESH_PARAM) == false && instance.reloadAnalyzersResponse() == null) { // Nulls will be written as empty reload analyzer responses for older versions return new SynonymUpdateResponse(new SynonymsReloadResult(instance.updateStatus(), EMPTY_RELOAD_ANALYZER_RESPONSE)); } diff --git a/server/src/test/java/org/elasticsearch/cluster/block/ClusterBlocksSerializationTests.java b/server/src/test/java/org/elasticsearch/cluster/block/ClusterBlocksSerializationTests.java index a4a1134802f36..4b0aa8851c8cb 100644 --- a/server/src/test/java/org/elasticsearch/cluster/block/ClusterBlocksSerializationTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/block/ClusterBlocksSerializationTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.block; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.coordination.NoMasterBlockService; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.metadata.Metadata; @@ -37,6 +36,8 @@ public class ClusterBlocksSerializationTests extends AbstractWireSerializingTestCase< ClusterBlocksSerializationTests.ClusterBlocksTestWrapper> { + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + @Override protected Writeable.Reader instanceReader() { return ClusterBlocksTestWrapper::new; @@ -147,7 +148,7 @@ public void testWriteToBwc() throws IOException { final ClusterBlocks clusterBlocks = builder.build(); final var out = new BytesStreamOutput(); - final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); out.setTransportVersion(bwcVersion); clusterBlocks.writeTo(out); @@ -171,7 +172,7 @@ public void testWriteToBwcFailure() { final ClusterBlocks clusterBlocks = builder.build(); final var out = new BytesStreamOutput(); - final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); out.setTransportVersion(bwcVersion); final IllegalStateException e = expectThrows(IllegalStateException.class, () -> clusterBlocks.writeTo(out)); assertThat(e.getMessage(), containsString("Cannot write multi-project blocks to a stream with version")); @@ -223,7 +224,7 @@ public void testDiffBwc() throws IOException { final var diff = current.diff(base); final var out = new BytesStreamOutput(); - final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); out.setTransportVersion(bwcVersion); diff.writeTo(out); @@ -252,7 +253,7 @@ public void testDiffBwcFailure() { final var diff = current.diff(base); final var out = new BytesStreamOutput(); - final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final TransportVersion bwcVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); out.setTransportVersion(bwcVersion); final IllegalStateException e = expectThrows(IllegalStateException.class, () -> diff.writeTo(out)); assertThat(e.getMessage(), containsString("Cannot write multi-project blocks diff to a stream with version")); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java index a1780c8a69b5b..bbdc05d561928 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.metadata; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.ClusterModule; import org.elasticsearch.cluster.Diff; import org.elasticsearch.common.io.stream.BytesStreamOutput; @@ -49,6 +48,8 @@ public class MetadataPersistentTasksTests extends ESTestCase { + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + private Set assignedAllocationIds; private NamedWriteableRegistry namedWriteableRegistry; private NamedWriteableRegistry namedWriteableRegistryBwc; @@ -134,7 +135,7 @@ public void testPersistentTasksSerializationBwc() throws IOException { final Metadata orig = randomMetadataWithPersistentTasks(); final BytesStreamOutput out = new BytesStreamOutput(); - final var previousVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final var previousVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); out.setTransportVersion(previousVersion); orig.writeTo(out); @@ -168,7 +169,7 @@ public void testPersistentTasksDiffSerializationBwc() throws IOException { final Diff diff = after.diff(before); final BytesStreamOutput out = new BytesStreamOutput(); - final var previousVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final var previousVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); out.setTransportVersion(previousVersion); diff.writeTo(out); @@ -335,7 +336,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + return TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); } @Override @@ -366,7 +367,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + return TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); } @Override diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataRepositoriesMetadataTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataRepositoriesMetadataTests.java index db501f740b64f..9178456255794 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataRepositoriesMetadataTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataRepositoriesMetadataTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.metadata; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.AbstractNamedDiffable; import org.elasticsearch.cluster.ClusterModule; import org.elasticsearch.cluster.Diff; @@ -43,6 +42,8 @@ public class MetadataRepositoriesMetadataTests extends ESTestCase { + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + private NamedWriteableRegistry namedWriteableRegistry; private NamedWriteableRegistry namedWriteableRegistryBwc; @@ -96,7 +97,7 @@ public void testRepositoriesMetadataDiffSerialization() throws IOException { } public void testRepositoriesMetadataSerializationBwc() throws IOException { - final var oldVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final var oldVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); // Before multi-project, BWC is possible for a single project final Metadata orig = randomMetadata(0, -1); doTestRepositoriesMetadataSerializationBwc(orig, oldVersion); @@ -126,7 +127,7 @@ private void simulateReadOnOldNodeAndAssert(BytesReference bytesReference, Trans } public void testRepositoriesMetadataDiffSerializationBwc() throws IOException { - final var oldVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT); + final var oldVersion = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); // Before multi-project, BWC is possible for a single project final Tuple tuple = randomMetadataAndUpdate(0, -1); doTestRepositoriesMetadataDiffSerializationBwc(tuple, oldVersion); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java index 3419b30bd2e89..417733c8fdbbd 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.metadata; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.ClusterModule; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.coordination.CoordinationMetadata; @@ -103,6 +102,8 @@ public class MetadataTests extends ESTestCase { + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + public void testUnknownFieldClusterMetadata() throws IOException { BytesReference metadata = BytesReference.bytes( JsonXContent.contentBuilder().startObject().startObject("meta-data").field("random", "value").endObject().endObject() @@ -620,7 +621,7 @@ public void testUnableToSerializeNonDefaultProjectBeforeMultiProject() { Metadata metadata = Metadata.builder().put(ProjectMetadata.builder(projectId)).build(); try (BytesStreamOutput output = new BytesStreamOutput()) { - output.setTransportVersion(TransportVersionUtils.getPreviousVersion(TransportVersions.MULTI_PROJECT)); + output.setTransportVersion(TransportVersionUtils.getPreviousVersion(MULTI_PROJECT)); var e = assertThrows(UnsupportedOperationException.class, () -> metadata.writeTo(output)); assertEquals("There is 1 project, but it has id [" + projectId + "] rather than default", e.getMessage()); } diff --git a/server/src/test/java/org/elasticsearch/cluster/routing/GlobalRoutingTableTests.java b/server/src/test/java/org/elasticsearch/cluster/routing/GlobalRoutingTableTests.java index fbaaf876116b8..e783ff0148321 100644 --- a/server/src/test/java/org/elasticsearch/cluster/routing/GlobalRoutingTableTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/routing/GlobalRoutingTableTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.routing; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.ClusterName; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.Diff; @@ -55,9 +54,8 @@ public class GlobalRoutingTableTests extends AbstractWireSerializingTestCase { - private static final TransportVersion PRE_MULTI_PROJECT_TRANSPORT_VERSION = TransportVersionUtils.getPreviousVersion( - TransportVersions.MULTI_PROJECT - ); + private static final TransportVersion MULTI_PROJECT = TransportVersion.fromName("multi_project"); + private static final TransportVersion PRE_MULTI_PROJECT_TRANSPORT_VERSION = TransportVersionUtils.getPreviousVersion(MULTI_PROJECT); /** * We intentionally don't want production code comparing two routing tables for equality. diff --git a/server/src/test/java/org/elasticsearch/snapshots/SnapshotsInProgressSerializationTests.java b/server/src/test/java/org/elasticsearch/snapshots/SnapshotsInProgressSerializationTests.java index 79d880c5ef5e1..66c69eaab717f 100644 --- a/server/src/test/java/org/elasticsearch/snapshots/SnapshotsInProgressSerializationTests.java +++ b/server/src/test/java/org/elasticsearch/snapshots/SnapshotsInProgressSerializationTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.snapshots; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.ClusterModule; import org.elasticsearch.cluster.ClusterName; import org.elasticsearch.cluster.ClusterState; @@ -65,6 +64,8 @@ public class SnapshotsInProgressSerializationTests extends SimpleDiffableWireSer .putCompatibilityVersions("local", new CompatibilityVersions(TransportVersion.current(), Map.of())) .build(); + private static final TransportVersion PROJECT_ID_IN_SNAPSHOT = TransportVersion.fromName("project_id_in_snapshot"); + @Override protected Custom createTestInstance() { return createTestInstance(() -> randomSnapshot(randomProjectIdOrDefault())); @@ -88,7 +89,7 @@ private Custom createTestInstance(Supplier randomEntrySupplier) { } public void testSerializationBwc() throws IOException { - final var oldVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.PROJECT_ID_IN_SNAPSHOT); + final var oldVersion = TransportVersionUtils.getPreviousVersion(PROJECT_ID_IN_SNAPSHOT); final BytesStreamOutput out = new BytesStreamOutput(); out.setTransportVersion(oldVersion); final Custom original = createTestInstance(() -> randomSnapshot(ProjectId.DEFAULT)); @@ -101,7 +102,7 @@ public void testSerializationBwc() throws IOException { } public void testDiffSerializationBwc() throws IOException { - final var oldVersion = TransportVersionUtils.getPreviousVersion(TransportVersions.PROJECT_ID_IN_SNAPSHOT); + final var oldVersion = TransportVersionUtils.getPreviousVersion(PROJECT_ID_IN_SNAPSHOT); final BytesStreamOutput out = new BytesStreamOutput(); out.setTransportVersion(oldVersion); diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/slm/SnapshotLifecyclePolicy.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/slm/SnapshotLifecyclePolicy.java index 7290710d6d042..9e405b497f0c1 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/slm/SnapshotLifecyclePolicy.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/slm/SnapshotLifecyclePolicy.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.core.slm; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest; import org.elasticsearch.cluster.SimpleDiffable; @@ -91,6 +91,10 @@ public class SnapshotLifecyclePolicy implements SimpleDiffable implements Operator { + private static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = TransportVersion.fromName("esql_profile_async_nanos"); + private volatile SubscribableListener blockedFuture; private final Map buffers = ConcurrentCollections.newConcurrentMap(); @@ -265,7 +267,7 @@ protected Status(long receivedPages, long completedPages, long processNanos) { protected Status(StreamInput in) throws IOException { this.receivedPages = in.readVLong(); this.completedPages = in.readVLong(); - this.processNanos = in.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_ASYNC_NANOS) + this.processNanos = in.getTransportVersion().supports(ESQL_PROFILE_ASYNC_NANOS) ? in.readVLong() : TimeValue.timeValueMillis(in.readVLong()).nanos(); } @@ -275,7 +277,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVLong(receivedPages); out.writeVLong(completedPages); out.writeVLong( - out.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_ASYNC_NANOS) + out.getTransportVersion().supports(ESQL_PROFILE_ASYNC_NANOS) ? processNanos : TimeValue.timeValueNanos(processNanos).millis() ); diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java index c92084a4650aa..86ccac8d15958 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java @@ -8,7 +8,6 @@ package org.elasticsearch.compute.operator; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.collect.Iterators; import org.elasticsearch.common.io.stream.StreamInput; @@ -50,13 +49,14 @@ public record DriverProfile( DriverSleeps sleeps ) implements Writeable, ChunkedToXContentObject { + private static final TransportVersion ESQL_DRIVER_NODE_DESCRIPTION = TransportVersion.fromName("esql_driver_node_description"); private static final TransportVersion ESQL_DRIVER_TASK_DESCRIPTION = TransportVersion.fromName("esql_driver_task_description"); public static DriverProfile readFrom(StreamInput in) throws IOException { return new DriverProfile( in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) ? in.readString() : "", - in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", - in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", + in.getTransportVersion().supports(ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", + in.getTransportVersion().supports(ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", in.readVLong(), in.readVLong(), in.readVLong(), @@ -72,7 +72,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION)) { out.writeString(description); } - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION)) { + if (out.getTransportVersion().supports(ESQL_DRIVER_NODE_DESCRIPTION)) { out.writeString(clusterName); out.writeString(nodeName); } diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverSleeps.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverSleeps.java index 46beb0259a6fe..010bc2cd5a1aa 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverSleeps.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverSleeps.java @@ -7,7 +7,7 @@ package org.elasticsearch.compute.operator; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; @@ -38,10 +38,15 @@ public record DriverSleeps(Map counts, List first, List groupings; protected final List aggregates; @@ -69,7 +70,7 @@ public Aggregate(Source source, LogicalPlan child, List groupings, L public Aggregate(StreamInput in) throws IOException { super(Source.readFrom((PlanStreamInput) in), in.readNamedWriteable(LogicalPlan.class)); - if (in.getTransportVersion().before(TransportVersions.ESQL_REMOVE_AGGREGATE_TYPE)) { + if (in.getTransportVersion().supports(ESQL_REMOVE_AGGREGATE_TYPE) == false) { in.readString(); } this.groupings = in.readNamedWriteableCollectionAsList(Expression.class); @@ -80,7 +81,7 @@ public Aggregate(StreamInput in) throws IOException { public void writeTo(StreamOutput out) throws IOException { Source.EMPTY.writeTo(out); out.writeNamedWriteable(child()); - if (out.getTransportVersion().before(TransportVersions.ESQL_REMOVE_AGGREGATE_TYPE)) { + if (out.getTransportVersion().supports(ESQL_REMOVE_AGGREGATE_TYPE) == false) { out.writeString("STANDARD"); } out.writeNamedWriteableCollection(groupings); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/LimitExec.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/LimitExec.java index 614c2b0431ca8..0619a3b2fd77d 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/LimitExec.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/LimitExec.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.esql.plan.physical; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -29,6 +29,8 @@ public class LimitExec extends UnaryExec implements EstimatesRowSize { LimitExec::new ); + private static final TransportVersion ESQL_LIMIT_ROW_SIZE = TransportVersion.fromName("esql_limit_row_size"); + private final Expression limit; private final Integer estimatedRowSize; @@ -43,7 +45,7 @@ private LimitExec(StreamInput in) throws IOException { Source.readFrom((PlanStreamInput) in), in.readNamedWriteable(PhysicalPlan.class), in.readNamedWriteable(Expression.class), - in.getTransportVersion().onOrAfter(TransportVersions.ESQL_LIMIT_ROW_SIZE) ? in.readOptionalVInt() : null + in.getTransportVersion().supports(ESQL_LIMIT_ROW_SIZE) ? in.readOptionalVInt() : null ); } @@ -52,7 +54,7 @@ public void writeTo(StreamOutput out) throws IOException { Source.EMPTY.writeTo(out); out.writeNamedWriteable(child()); out.writeNamedWriteable(limit()); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_LIMIT_ROW_SIZE)) { + if (out.getTransportVersion().supports(ESQL_LIMIT_ROW_SIZE)) { out.writeOptionalVInt(estimatedRowSize); } } diff --git a/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/BlobAnalyzeAction.java b/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/BlobAnalyzeAction.java index e6a885b0f644a..c598804cb2e54 100644 --- a/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/BlobAnalyzeAction.java +++ b/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/BlobAnalyzeAction.java @@ -10,7 +10,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.ExceptionsHelper; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.ActionListenerResponseHandler; import org.elasticsearch.action.ActionRequestValidationException; @@ -724,6 +724,9 @@ private WriteDetails(long bytesWritten, long elapsedNanos, long throttledNanos, } static class Request extends LegacyActionRequest { + + private static final TransportVersion REPO_ANALYSIS_COPY_BLOB = TransportVersion.fromName("repo_analysis_copy_blob"); + private final String repositoryName; private final String blobPath; private final String blobName; @@ -783,7 +786,7 @@ static class Request extends LegacyActionRequest { readEarly = in.readBoolean(); writeAndOverwrite = in.readBoolean(); abortWrite = in.readBoolean(); - if (in.getTransportVersion().onOrAfter(TransportVersions.REPO_ANALYSIS_COPY_BLOB)) { + if (in.getTransportVersion().supports(REPO_ANALYSIS_COPY_BLOB)) { copyBlobName = in.readOptionalString(); } else { copyBlobName = null; @@ -804,7 +807,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(readEarly); out.writeBoolean(writeAndOverwrite); out.writeBoolean(abortWrite); - if (out.getTransportVersion().onOrAfter(TransportVersions.REPO_ANALYSIS_COPY_BLOB)) { + if (out.getTransportVersion().supports(REPO_ANALYSIS_COPY_BLOB)) { out.writeOptionalString(copyBlobName); } else if (copyBlobName != null) { assert false : out.getTransportVersion(); diff --git a/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/RepositoryAnalyzeAction.java b/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/RepositoryAnalyzeAction.java index 1623546b1c494..41cd0cb0f8cea 100644 --- a/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/RepositoryAnalyzeAction.java +++ b/x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/analyze/RepositoryAnalyzeAction.java @@ -365,6 +365,8 @@ private boolean invariant() { public static class AsyncAction { + private static final TransportVersion REPO_ANALYSIS_COPY_BLOB = TransportVersion.fromName("repo_analysis_copy_blob"); + private final TransportService transportService; private final BlobStoreRepository repository; private final CancellableTask task; @@ -522,9 +524,7 @@ public void run() { final long targetLength = blobSizes.get(i); final boolean smallBlob = targetLength <= MAX_ATOMIC_WRITE_SIZE; // avoid the atomic API for larger blobs final boolean abortWrite = smallBlob && request.isAbortWritePermitted() && rarely(random); - final boolean doCopy = minClusterTransportVersion.onOrAfter(TransportVersions.REPO_ANALYSIS_COPY_BLOB) - && rarely(random) - && i > 0; + final boolean doCopy = minClusterTransportVersion.supports(REPO_ANALYSIS_COPY_BLOB) && rarely(random) && i > 0; final String blobName = "test-blob-" + i + "-" + UUIDs.randomBase64UUID(random); String copyBlobName = null; if (doCopy) {