From 03c81e83001a71cbe9a9839ebf9029fe8b6c7932 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 09:42:25 -0700 Subject: [PATCH 1/9] Migrate 8841_030 through 8841_026 --- .../java/org/elasticsearch/TransportVersions.java | 10 ---------- .../action/datastreams/GetDataStreamAction.java | 5 ++++- .../lifecycle/ExplainDataStreamLifecycleAction.java | 11 +++++++---- .../search/vectors/RescoreVectorBuilder.java | 10 ++++------ .../referable/esql_driver_task_description.csv | 2 +- .../referable/esql_report_shard_partitioning.csv | 1 + .../referable/inference_add_timeout_put_endpoint.csv | 1 + .../introduce_failures_default_retention.csv | 1 + .../referable/rescore_vector_allow_zero.csv | 1 + .../inference/action/PutInferenceModelAction.java | 12 +++++++----- .../elasticsearch/compute/lucene/LuceneOperator.java | 7 +++---- .../compute/operator/DriverProfile.java | 6 ++---- .../elasticsearch/compute/operator/DriverStatus.java | 6 ++---- .../action/PutInferenceModelRequestTests.java | 9 ++++++--- 14 files changed, 40 insertions(+), 42 deletions(-) create mode 100644 server/src/main/resources/transport/definitions/referable/esql_report_shard_partitioning.csv create mode 100644 server/src/main/resources/transport/definitions/referable/inference_add_timeout_put_endpoint.csv create mode 100644 server/src/main/resources/transport/definitions/referable/introduce_failures_default_retention.csv create mode 100644 server/src/main/resources/transport/definitions/referable/rescore_vector_allow_zero.csv diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 030fdaae38e38..c7ae55cebbef4 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -171,12 +171,6 @@ static TransportVersion def(int id) { public static final TransportVersion PINNED_RETRIEVER_8_19 = def(8_841_0_23); public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK_8_19 = def(8_841_0_24); public static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19 = def(8_841_0_25); - public static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19 = def(8_841_0_26); - public static final TransportVersion RESCORE_VECTOR_ALLOW_ZERO_BACKPORT_8_19 = def(8_841_0_27); - public static final TransportVersion INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT_8_19 = def(8_841_0_28); - public static final TransportVersion ESQL_REPORT_SHARD_PARTITIONING_8_19 = def(8_841_0_29); - // TODO: add to esql_driver_task_description.csv - public static final TransportVersion ESQL_DRIVER_TASK_DESCRIPTION_8_19 = def(8_841_0_30); public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00); public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = def(9_006_0_00); public static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = def(9_007_00_0); @@ -204,7 +198,6 @@ static TransportVersion def(int id) { public static final TransportVersion INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD = def(9_036_0_00); public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = def(9_037_0_00); public static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES = def(9_038_00_0); - public static final TransportVersion RESCORE_VECTOR_ALLOW_ZERO = def(9_039_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 BATCHED_QUERY_PHASE_VERSION = def(9_043_0_00); @@ -214,7 +207,6 @@ static TransportVersion def(int id) { public static final TransportVersion SEMANTIC_TEXT_CHUNKING_CONFIG = def(9_047_0_00); public static final TransportVersion REPO_ANALYSIS_COPY_BLOB = def(9_048_0_00); public static final TransportVersion AMAZON_BEDROCK_TASK_SETTINGS = def(9_049_0_00); - public static final TransportVersion ESQL_REPORT_SHARD_PARTITIONING = def(9_050_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 DEAD_SEARCH_INCREMENTAL_TOP_DOCS_NULL = def(9_054_0_00); @@ -230,9 +222,7 @@ static TransportVersion def(int id) { public static final TransportVersion PINNED_RETRIEVER = def(9_068_0_00); public static final TransportVersion ML_INFERENCE_SAGEMAKER = def(9_069_0_00); public static final TransportVersion WRITE_LOAD_INCLUDES_BUFFER_WRITES = def(9_070_0_00); - public static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION = def(9_071_0_00); public static final TransportVersion FILE_SETTINGS_HEALTH_INFO = def(9_072_0_00); - public static final TransportVersion INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT = def(9_074_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); diff --git a/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java b/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java index d556574391f3c..f9e1a81eb7e02 100644 --- a/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java +++ b/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java @@ -211,6 +211,9 @@ public enum ManagedBy { public static final ParseField DATA_STREAMS_FIELD = new ParseField("data_streams"); + private static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION = TransportVersion.fromName( + "introduce_failures_default_retention" + ); private static final TransportVersion INCLUDE_INDEX_MODE_IN_GET_DATA_STREAM = TransportVersion.fromName( "include_index_mode_in_get_data_stream" ); @@ -666,7 +669,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalWriteable(rolloverConfiguration); } // A version 9.x cluster will never read this, so we only need to include the patch version here. - if (out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION)) { out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.defaultRetention()); out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.maxRetention()); out.writeOptionalTimeValue(failuresGlobalRetention == null ? null : failuresGlobalRetention.defaultRetention()); diff --git a/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java b/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java index 3d5338045a6db..09246a466aef7 100644 --- a/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java +++ b/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java @@ -9,6 +9,7 @@ package org.elasticsearch.action.datastreams.lifecycle; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; @@ -143,6 +144,10 @@ public Request indicesOptions(IndicesOptions indicesOptions) { */ public static class Response extends ActionResponse implements ChunkedToXContentObject { public static final ParseField INDICES_FIELD = new ParseField("indices"); + private static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION = TransportVersion.fromName( + "" + "introduce_failures_default_retention" + ); + private final List indices; @Nullable private final RolloverConfiguration rolloverConfiguration; @@ -166,8 +171,7 @@ public Response( public Response(StreamInput in) throws IOException { this.indices = in.readCollectionAsList(ExplainIndexDataStreamLifecycle::new); this.rolloverConfiguration = in.readOptionalWriteable(RolloverConfiguration::new); - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION)) { var defaultRetention = in.readOptionalTimeValue(); var maxRetention = in.readOptionalTimeValue(); var defaultFailuresRetention = in.readOptionalTimeValue(); @@ -209,8 +213,7 @@ private DataStreamGlobalRetention getGlobalRetentionForLifecycle(DataStreamLifec public void writeTo(StreamOutput out) throws IOException { out.writeCollection(indices); out.writeOptionalWriteable(rolloverConfiguration); - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION)) { out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.defaultRetention()); out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.maxRetention()); out.writeOptionalTimeValue(failureGlobalRetention == null ? null : failureGlobalRetention.defaultRetention()); diff --git a/server/src/main/java/org/elasticsearch/search/vectors/RescoreVectorBuilder.java b/server/src/main/java/org/elasticsearch/search/vectors/RescoreVectorBuilder.java index ac5938b047804..98cb674f46bd1 100644 --- a/server/src/main/java/org/elasticsearch/search/vectors/RescoreVectorBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/vectors/RescoreVectorBuilder.java @@ -10,6 +10,7 @@ package org.elasticsearch.search.vectors; import org.elasticsearch.ElasticsearchStatusException; +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; @@ -23,9 +24,6 @@ import java.io.IOException; import java.util.Objects; -import static org.elasticsearch.TransportVersions.RESCORE_VECTOR_ALLOW_ZERO; -import static org.elasticsearch.TransportVersions.RESCORE_VECTOR_ALLOW_ZERO_BACKPORT_8_19; - public class RescoreVectorBuilder implements Writeable, ToXContentObject { public static final ParseField OVERSAMPLE_FIELD = new ParseField("oversample"); @@ -40,6 +38,8 @@ public class RescoreVectorBuilder implements Writeable, ToXContentObject { PARSER.declareFloat(ConstructingObjectParser.constructorArg(), OVERSAMPLE_FIELD); } + private static final TransportVersion RESCORE_VECTOR_ALLOW_ZERO = TransportVersion.fromName("rescore_vector_allow_zero"); + // Oversample is required as of now as it is the only field in the rescore vector private final float oversample; @@ -58,9 +58,7 @@ public RescoreVectorBuilder(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { // We don't want to serialize a `0` oversample to a node that doesn't know what to do with it. - if (oversample == NO_OVERSAMPLE - && out.getTransportVersion().before(RESCORE_VECTOR_ALLOW_ZERO) - && out.getTransportVersion().isPatchFrom(RESCORE_VECTOR_ALLOW_ZERO_BACKPORT_8_19) == false) { + if (oversample == NO_OVERSAMPLE && out.getTransportVersion().supports(RESCORE_VECTOR_ALLOW_ZERO) == false) { throw new ElasticsearchStatusException( "[rescore_vector] does not support a 0 for [" + OVERSAMPLE_FIELD.getPreferredName() diff --git a/server/src/main/resources/transport/definitions/referable/esql_driver_task_description.csv b/server/src/main/resources/transport/definitions/referable/esql_driver_task_description.csv index 9fa3deb2861a0..2d32559c9c56f 100644 --- a/server/src/main/resources/transport/definitions/referable/esql_driver_task_description.csv +++ b/server/src/main/resources/transport/definitions/referable/esql_driver_task_description.csv @@ -1 +1 @@ -9005000,9000004 +9005000,9000004,8841030 diff --git a/server/src/main/resources/transport/definitions/referable/esql_report_shard_partitioning.csv b/server/src/main/resources/transport/definitions/referable/esql_report_shard_partitioning.csv new file mode 100644 index 0000000000000..c64c5d8086a54 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_report_shard_partitioning.csv @@ -0,0 +1 @@ +9050000,8841029 diff --git a/server/src/main/resources/transport/definitions/referable/inference_add_timeout_put_endpoint.csv b/server/src/main/resources/transport/definitions/referable/inference_add_timeout_put_endpoint.csv new file mode 100644 index 0000000000000..9740baf8793d2 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/inference_add_timeout_put_endpoint.csv @@ -0,0 +1 @@ +9074000,8841028 diff --git a/server/src/main/resources/transport/definitions/referable/introduce_failures_default_retention.csv b/server/src/main/resources/transport/definitions/referable/introduce_failures_default_retention.csv new file mode 100644 index 0000000000000..aa9d19fdaa749 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/introduce_failures_default_retention.csv @@ -0,0 +1 @@ +9071000,8841026 diff --git a/server/src/main/resources/transport/definitions/referable/rescore_vector_allow_zero.csv b/server/src/main/resources/transport/definitions/referable/rescore_vector_allow_zero.csv new file mode 100644 index 0000000000000..e7e51312e1028 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/rescore_vector_allow_zero.csv @@ -0,0 +1 @@ +9039000,8841027 diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java index cded88c36388c..37fab195adee7 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; @@ -33,6 +33,10 @@ public class PutInferenceModelAction extends ActionType processedQueries; private final Set processedShards; @@ -414,7 +413,7 @@ public void writeTo(StreamOutput out) throws IOException { } private static boolean serializeShardPartitioning(TransportVersion version) { - return version.onOrAfter(ESQL_REPORT_SHARD_PARTITIONING) || version.isPatchFrom(ESQL_REPORT_SHARD_PARTITIONING_8_19); + return version.supports(ESQL_REPORT_SHARD_PARTITIONING); } @Override 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 28a486d2d4ced..c92084a4650aa 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 @@ -54,8 +54,7 @@ public record DriverProfile( public static DriverProfile readFrom(StreamInput in) throws IOException { return new DriverProfile( - in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19) ? in.readString() : "", + 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.readVLong(), @@ -70,8 +69,7 @@ public static DriverProfile readFrom(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19)) { + if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION)) { out.writeString(description); } if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION)) { diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java index 9d06204964269..4d4a4ec1e8f5d 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java @@ -65,8 +65,7 @@ public record DriverStatus( public static DriverStatus readFrom(StreamInput in) throws IOException { return new DriverStatus( in.readString(), - in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19) ? in.readString() : "", + 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.readLong(), @@ -83,8 +82,7 @@ public static DriverStatus readFrom(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(sessionId); - if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19)) { + if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION)) { out.writeString(description); } if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION)) { diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java index e514867780669..56b444af2900f 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.action; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.inference.TaskType; import org.elasticsearch.xcontent.XContentType; @@ -17,6 +16,11 @@ import org.elasticsearch.xpack.core.ml.AbstractBWCWireSerializationTestCase; public class PutInferenceModelRequestTests extends AbstractBWCWireSerializationTestCase { + + private static final TransportVersion INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT = TransportVersion.fromName( + "inference_add_timeout_put_endpoint" + ); + @Override protected Writeable.Reader instanceReader() { return PutInferenceModelAction.Request::new; @@ -40,8 +44,7 @@ protected PutInferenceModelAction.Request mutateInstance(PutInferenceModelAction @Override protected PutInferenceModelAction.Request mutateInstanceForVersion(PutInferenceModelAction.Request instance, TransportVersion version) { - if (version.onOrAfter(TransportVersions.INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT) - || version.isPatchFrom(TransportVersions.INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT_8_19)) { + if (version.supports(INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT)) { return instance; } else { return new PutInferenceModelAction.Request( From 36f3790528502adf8c06d1c5777782c1f21eb2d0 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 10:15:25 -0700 Subject: [PATCH 2/9] Migrate 8841_025 through 8841_021 --- .../org/elasticsearch/TransportVersions.java | 10 ------ .../metadata/DataStreamFailureStore.java | 18 ++++------ .../cluster/metadata/DataStreamLifecycle.java | 20 +++++------ .../cluster/metadata/DataStreamOptions.java | 12 +++---- .../esql_aggregate_metric_double_block.csv | 1 + .../referable/esql_report_original_types.csv | 1 + .../introduce_failures_lifecycle.csv | 1 + .../referable/ml_inference_sagemaker.csv | 1 + .../referable/pinned_retriever.csv | 1 + .../DataStreamFeatureSetUsage.java | 36 ++++++++----------- .../esql/core/type/UnsupportedEsField.java | 10 +++--- .../org/elasticsearch/compute/data/Block.java | 7 ++-- .../compute/data/BlockSerializationTests.java | 11 +++--- .../xpack/esql/action/ColumnInfoImpl.java | 10 +++--- .../services/sagemaker/SageMakerService.java | 5 +-- .../model/SageMakerServiceSettings.java | 7 ++-- .../model/SageMakerTaskSettings.java | 7 ++-- .../schema/SageMakerStoredServiceSchema.java | 7 ++-- .../schema/SageMakerStoredTaskSchema.java | 9 ++--- .../openai/OpenAiTextEmbeddingPayload.java | 7 ++-- .../retriever/PinnedRankDoc.java | 4 +-- 21 files changed, 80 insertions(+), 105 deletions(-) create mode 100644 server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_block.csv create mode 100644 server/src/main/resources/transport/definitions/referable/esql_report_original_types.csv create mode 100644 server/src/main/resources/transport/definitions/referable/introduce_failures_lifecycle.csv create mode 100644 server/src/main/resources/transport/definitions/referable/ml_inference_sagemaker.csv create mode 100644 server/src/main/resources/transport/definitions/referable/pinned_retriever.csv diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index c7ae55cebbef4..3169d233713fe 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -166,11 +166,6 @@ static TransportVersion def(int id) { public static final TransportVersion SEMANTIC_TEXT_CHUNKING_CONFIG_8_19 = def(8_841_0_18); public static final TransportVersion BATCHED_QUERY_PHASE_VERSION_BACKPORT_8_X = def(8_841_0_19); public static final TransportVersion SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19 = def(8_841_0_20); - public static final TransportVersion ML_INFERENCE_SAGEMAKER_8_19 = def(8_841_0_21); - public static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19 = def(8_841_0_22); - public static final TransportVersion PINNED_RETRIEVER_8_19 = def(8_841_0_23); - public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK_8_19 = def(8_841_0_24); - public static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19 = def(8_841_0_25); public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00); public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = def(9_006_0_00); public static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = def(9_007_00_0); @@ -197,7 +192,6 @@ static TransportVersion def(int id) { public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL = def(9_035_0_00); public static final TransportVersion INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD = def(9_036_0_00); public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = def(9_037_0_00); - public static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES = def(9_038_00_0); 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 BATCHED_QUERY_PHASE_VERSION = def(9_043_0_00); @@ -216,11 +210,7 @@ static TransportVersion def(int id) { 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 INTRODUCE_FAILURES_LIFECYCLE = def(9_065_0_00); public static final TransportVersion PROJECT_METADATA_SETTINGS = def(9_066_0_00); - public static final TransportVersion AGGREGATE_METRIC_DOUBLE_BLOCK = def(9_067_0_00); - public static final TransportVersion PINNED_RETRIEVER = def(9_068_0_00); - public static final TransportVersion ML_INFERENCE_SAGEMAKER = def(9_069_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); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java index 5c8849e1282d8..e401ca62984f3 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java @@ -9,7 +9,7 @@ package org.elasticsearch.cluster.metadata; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.SimpleDiffable; import org.elasticsearch.common.Strings; @@ -59,6 +59,8 @@ public record DataStreamFailureStore(@Nullable Boolean enabled, @Nullable DataSt ); } + private static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = TransportVersion.fromName("introduce_failures_lifecycle"); + /** * @param enabled, true when the failure is enabled, false when it's disabled, null when it depends on other configuration. Currently, * null value is not supported because there are no other arguments @@ -74,10 +76,7 @@ public record DataStreamFailureStore(@Nullable Boolean enabled, @Nullable DataSt public DataStreamFailureStore(StreamInput in) throws IOException { this( in.readOptionalBoolean(), - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readOptionalWriteable(DataStreamLifecycle::new) - : null + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readOptionalWriteable(DataStreamLifecycle::new) : null ); } @@ -88,8 +87,7 @@ public static Diff readDiffFrom(StreamInput in) throws I @Override public void writeTo(StreamOutput out) throws IOException { out.writeOptionalBoolean(enabled); - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { out.writeOptionalWriteable(lifecycle); } } @@ -169,8 +167,7 @@ public Template(@Nullable Boolean enabled, @Nullable DataStreamLifecycle.Templat @Override public void writeTo(StreamOutput out) throws IOException { ResettableValue.write(out, enabled, StreamOutput::writeBoolean); - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { ResettableValue.write(out, lifecycle, (o, v) -> v.writeTo(o)); } } @@ -178,8 +175,7 @@ public void writeTo(StreamOutput out) throws IOException { public static Template read(StreamInput in) throws IOException { ResettableValue enabled = ResettableValue.read(in, StreamInput::readBoolean); ResettableValue lifecycle = ResettableValue.undefined(); - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycle = ResettableValue.read(in, DataStreamLifecycle.Template::read); } return new Template(enabled, lifecycle); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java index 174cdc88c278d..7d527dd43ce8e 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java @@ -133,6 +133,8 @@ public static boolean isDataStreamsLifecycleOnlyMode(final Settings settings) { }, DOWNSAMPLING_FIELD, ObjectParser.ValueType.OBJECT_ARRAY_OR_NULL); } + private static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = TransportVersion.fromName("introduce_failures_lifecycle"); + private final LifecycleType lifecycleType; private final boolean enabled; @Nullable @@ -344,8 +346,7 @@ public void writeTo(StreamOutput out) throws IOException { } out.writeBoolean(enabled()); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycleType.writeTo(out); } } @@ -373,10 +374,7 @@ public DataStreamLifecycle(StreamInput in) throws IOException { downsampling = null; enabled = true; } - lifecycleType = in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? LifecycleType.read(in) - : LifecycleType.DATA; + lifecycleType = in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? LifecycleType.read(in) : LifecycleType.DATA; } /** @@ -739,8 +737,7 @@ public void writeTo(StreamOutput out) throws IOException { } out.writeBoolean(enabled); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycleType.writeTo(out); } } @@ -802,10 +799,9 @@ public static Template read(StreamInput in) throws IOException { } enabled = in.readBoolean(); } - var lifecycleTarget = in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? LifecycleType.read(in) - : LifecycleType.DATA; + var lifecycleTarget = in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) + ? LifecycleType.read(in) + : LifecycleType.DATA; return new Template(lifecycleTarget, enabled, dataRetention, downsampling); } diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java index f68a6c17494d2..7ef9ed8bfbe2d 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java @@ -9,7 +9,7 @@ package org.elasticsearch.cluster.metadata; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.SimpleDiffable; import org.elasticsearch.common.Strings; @@ -56,6 +56,8 @@ public record DataStreamOptions(@Nullable DataStreamFailureStore failureStore) ); } + private static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = TransportVersion.fromName("introduce_failures_lifecycle"); + public static DataStreamOptions read(StreamInput in) throws IOException { return new DataStreamOptions(in.readOptionalWriteable(DataStreamFailureStore::new)); } @@ -73,10 +75,7 @@ public boolean isEmpty() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - || failureStore == null - || failureStore().enabled() != null) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) || failureStore == null || failureStore().enabled() != null) { out.writeOptionalWriteable(failureStore); } else { // When communicating with older versions we need to ensure we do not sent an invalid failure store config. @@ -139,8 +138,7 @@ public Template(DataStreamFailureStore.Template template) { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) || failureStore.get() == null || failureStore().mapAndGet(DataStreamFailureStore.Template::enabled).get() != null) { ResettableValue.write(out, failureStore, (o, v) -> v.writeTo(o)); diff --git a/server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_block.csv b/server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_block.csv new file mode 100644 index 0000000000000..aee5a5bf0eb7f --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_block.csv @@ -0,0 +1 @@ +9067000,8841024 diff --git a/server/src/main/resources/transport/definitions/referable/esql_report_original_types.csv b/server/src/main/resources/transport/definitions/referable/esql_report_original_types.csv new file mode 100644 index 0000000000000..9eea8dc6e328e --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_report_original_types.csv @@ -0,0 +1 @@ +9038000,8841022 diff --git a/server/src/main/resources/transport/definitions/referable/introduce_failures_lifecycle.csv b/server/src/main/resources/transport/definitions/referable/introduce_failures_lifecycle.csv new file mode 100644 index 0000000000000..286d3901555cf --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/introduce_failures_lifecycle.csv @@ -0,0 +1 @@ +9065000,8841025 diff --git a/server/src/main/resources/transport/definitions/referable/ml_inference_sagemaker.csv b/server/src/main/resources/transport/definitions/referable/ml_inference_sagemaker.csv new file mode 100644 index 0000000000000..8de9ad47b002d --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/ml_inference_sagemaker.csv @@ -0,0 +1 @@ +9069000,8841021 diff --git a/server/src/main/resources/transport/definitions/referable/pinned_retriever.csv b/server/src/main/resources/transport/definitions/referable/pinned_retriever.csv new file mode 100644 index 0000000000000..60a4ff0325946 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/pinned_retriever.csv @@ -0,0 +1 @@ +9068000,8841023 diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java index 33defc62c91a8..e30b3ae12966d 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java @@ -127,6 +127,8 @@ public record DataStreamStats( Map globalRetentionStats ) implements Writeable { + private static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = TransportVersion.fromName("introduce_failures_lifecycle"); + public DataStreamStats(StreamInput in) throws IOException { this( in.readVLong(), @@ -134,26 +136,17 @@ public DataStreamStats(StreamInput in) throws IOException { in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0) ? in.readVLong() : 0, in.getTransportVersion().onOrAfter(TransportVersions.FAILURE_STORE_ENABLED_BY_CLUSTER_SETTING) ? in.readVLong() : 0, in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0) ? in.readVLong() : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readVLong() - : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readVLong() - : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) - : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) - : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readMap(DataStreamLifecycleFeatureSetUsage.GlobalRetentionStats::new) - : Map.of() + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, + in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, + in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) + ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) + : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, + in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) + ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) + : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, + in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) + ? in.readMap(DataStreamLifecycleFeatureSetUsage.GlobalRetentionStats::new) + : Map.of() ); } @@ -168,8 +161,7 @@ public void writeTo(StreamOutput out) throws IOException { } out.writeVLong(this.failureStoreIndicesCount); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { out.writeVLong(failuresLifecycleExplicitlyEnabledCount); out.writeVLong(failuresLifecycleEffectivelyEnabledCount); failuresLifecycleDataRetentionStats.writeTo(out); diff --git a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java index bf6ad214df4b6..708a61d1ed606 100644 --- a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java +++ b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java @@ -6,7 +6,7 @@ */ package org.elasticsearch.xpack.esql.core.type; -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.xpack.esql.core.util.PlanStreamInput; @@ -24,6 +24,8 @@ */ public class UnsupportedEsField extends EsField { + private static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES = TransportVersion.fromName("esql_report_original_types"); + private final List originalTypes; private final String inherited; // for fields belonging to parents (or grandparents) that have an unsupported type @@ -58,8 +60,7 @@ public UnsupportedEsField(StreamInput in) throws IOException { } private static List readOriginalTypes(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { return in.readCollectionAsList(i -> ((PlanStreamInput) i).readCachedString()); } else { return List.of(((PlanStreamInput) in).readCachedString().split(",")); @@ -69,8 +70,7 @@ private static List readOriginalTypes(StreamInput in) throws IOException @Override public void writeContent(StreamOutput out) throws IOException { ((PlanStreamOutput) out).writeCachedString(getName()); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { out.writeCollection(getOriginalTypes(), (o, s) -> ((PlanStreamOutput) o).writeCachedString(s)); } else { ((PlanStreamOutput) out).writeCachedString(String.join(",", getOriginalTypes())); diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java index 8af78dc4fa868..c710f049055d0 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java @@ -10,7 +10,6 @@ import org.apache.lucene.util.Accountable; import org.apache.lucene.util.RamUsageEstimator; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.unit.ByteSizeValue; @@ -41,6 +40,9 @@ * the same block at the same time. */ public interface Block extends Accountable, BlockLoader.Block, Writeable, RefCounted, Releasable { + + TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK = TransportVersion.fromName("esql_aggregate_metric_double_block"); + /** * The maximum number of values that can be added to one position via lookup. * TODO maybe make this everywhere? @@ -373,8 +375,7 @@ static Block readTypedBlock(BlockStreamInput in) throws IOException { } static boolean supportsAggregateMetricDoubleBlock(TransportVersion version) { - return version.onOrAfter(TransportVersions.AGGREGATE_METRIC_DOUBLE_BLOCK) - || version.isPatchFrom(TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK_8_19); + return version.supports(ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK); } /** diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java index bf00094779588..c59714a589e24 100644 --- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java +++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java @@ -9,7 +9,6 @@ import org.apache.lucene.util.BytesRef; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.breaker.CircuitBreaker; import org.elasticsearch.common.breaker.CircuitBreakingException; import org.elasticsearch.common.unit.ByteSizeValue; @@ -36,6 +35,10 @@ public class BlockSerializationTests extends SerializationTestCase { + private static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK = TransportVersion.fromName( + "esql_aggregate_metric_double_block" + ); + public void testConstantIntBlock() throws IOException { assertConstantBlockImpl(blockFactory.newConstantIntBlockWith(randomInt(), randomIntBetween(1, 8192))); } @@ -425,11 +428,7 @@ public void testCompositeBlock() throws Exception { try ( CompositeBlock deserBlock = serializeDeserializeBlockWithVersion( origBlock, - TransportVersionUtils.randomVersionBetween( - random(), - TransportVersions.AGGREGATE_METRIC_DOUBLE_BLOCK, - TransportVersion.current() - ) + TransportVersionUtils.randomVersionBetween(random(), ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK, TransportVersion.current()) ) ) { assertThat(deserBlock.getBlockCount(), equalTo(numBlocks)); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java index 1f9fa8296c95f..44f921743ff58 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.esql.action; -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.core.Nullable; @@ -43,6 +43,8 @@ public class ColumnInfoImpl implements ColumnInfo { PARSER = parser.build(); } + private static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES = TransportVersion.fromName("esql_report_original_types"); + @Override public boolean equals(Object o) { if (this == o) { @@ -100,8 +102,7 @@ private static DataType calculateSuggestedCast(List originalTypes) { public ColumnInfoImpl(StreamInput in) throws IOException { this.name = in.readString(); this.type = DataType.fromEs(in.readString()); - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { this.originalTypes = in.readOptionalStringCollectionAsList(); this.suggestedCast = calculateSuggestedCast(this.originalTypes); } else { @@ -114,8 +115,7 @@ public ColumnInfoImpl(StreamInput in) throws IOException { public void writeTo(StreamOutput out) throws IOException { out.writeString(name); out.writeString(type.outputType()); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { out.writeOptionalStringCollection(originalTypes); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java index 676a1edec126b..1c27e236c4a0b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java @@ -9,7 +9,6 @@ import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.support.SubscribableListener; import org.elasticsearch.cluster.service.ClusterService; @@ -55,6 +54,8 @@ public class SageMakerService implements InferenceService, RerankingInferenceSer private static final List ALIASES = List.of("sagemaker", "amazonsagemaker"); private static final int DEFAULT_BATCH_SIZE = 256; private static final TimeValue DEFAULT_TIMEOUT = TimeValue.THIRTY_SECONDS; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); + private final SageMakerModelBuilder modelBuilder; private final SageMakerClient client; private final SageMakerSchemas schemas; @@ -322,7 +323,7 @@ public Model updateModelWithEmbeddingDetails(Model model, int embeddingSize) { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java index b7a554d387c84..1c49d465c497d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.model; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -58,6 +57,7 @@ record SageMakerServiceSettings( private static final String TARGET_CONTAINER_HOSTNAME = "target_container_hostname"; private static final String INFERENCE_COMPONENT_NAME = "inference_component_name"; private static final String BATCH_SIZE = "batch_size"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); SageMakerServiceSettings { Objects.requireNonNull(endpointName); @@ -112,13 +112,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java index a36944c51f104..6e453c17b82b8 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.model; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -46,6 +45,7 @@ record SageMakerTaskSettings( private static final String INFERENCE_ID = "inference_id"; private static final String SESSION_ID = "session_id"; private static final String TARGET_VARIANT = "target_variant"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); SageMakerTaskSettings(StreamInput in) throws IOException { this( @@ -112,13 +112,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java index b3d948a85de97..70ed23e215dd6 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.schema; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.inference.ServiceSettings; import org.elasticsearch.xcontent.ToXContentObject; @@ -21,6 +20,7 @@ public interface SageMakerStoredServiceSchema extends ServiceSettings { SageMakerStoredServiceSchema NO_OP = new SageMakerStoredServiceSchema() { private static final String NAME = "noop_sagemaker_service_schema"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); @Override public String getWriteableName() { @@ -30,13 +30,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java index a3ff632f466c2..f45529b4c39b6 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.schema; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.inference.TaskSettings; import org.elasticsearch.xcontent.XContentBuilder; @@ -20,6 +19,9 @@ */ public interface SageMakerStoredTaskSchema extends TaskSettings { SageMakerStoredTaskSchema NO_OP = new SageMakerStoredTaskSchema() { + + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); + @Override public boolean isEmpty() { return true; @@ -40,13 +42,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java index 6fcbd309551e3..f060c7a75797b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java @@ -11,7 +11,6 @@ import software.amazon.awssdk.services.sagemakerruntime.model.InvokeEndpointResponse; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; @@ -126,6 +125,7 @@ public TextEmbeddingFloatResults responseBody(SageMakerModel model, InvokeEndpoi record ApiServiceSettings(@Nullable Integer dimensions, Boolean dimensionsSetByUser) implements SageMakerStoredServiceSchema { private static final String NAME = "sagemaker_openai_text_embeddings_service_settings"; private static final String DIMENSIONS_FIELD = "dimensions"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); ApiServiceSettings(StreamInput in) throws IOException { this(in.readOptionalInt(), in.readBoolean()); @@ -139,13 +139,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java b/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java index 4f193511550b0..b6c02c993bad2 100644 --- a/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java +++ b/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java @@ -9,7 +9,6 @@ import org.apache.lucene.search.Explanation; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.search.rank.RankDoc; @@ -19,6 +18,7 @@ public class PinnedRankDoc extends RankDoc { public static final String NAME = "pinned_rank_doc"; + private static final TransportVersion PINNED_RETRIEVER = TransportVersion.fromName("pinned_retriever"); private final boolean isPinned; @@ -81,6 +81,6 @@ public TransportVersion getMinimalSupportedVersion() { @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.PINNED_RETRIEVER) || version.isPatchFrom(TransportVersions.PINNED_RETRIEVER_8_19); + return version.supports(PINNED_RETRIEVER); } } From e6cc7ff85cc802e92b5be6e8d3b6684b908e5d79 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 10:32:52 -0700 Subject: [PATCH 3/9] Migrate transport versions 8841_020 through 8841_016 --- .../java/org/elasticsearch/TransportVersions.java | 11 ----------- .../search/SearchQueryThenFetchAsyncAction.java | 6 ++++-- .../cluster/metadata/InferenceFieldMetadata.java | 12 +++++------- .../java/org/elasticsearch/common/lucene/Lucene.java | 10 +++++----- .../search/query/QuerySearchResult.java | 6 ++++-- .../referable/amazon_bedrock_task_settings.csv | 1 + .../referable/batched_query_phase_version.csv | 1 + .../referable/search_incremental_top_docs_null.csv | 1 + .../referable/semantic_text_chunking_config.csv | 1 + .../unreferable/dead_remote_exception.csv | 1 + .../unreferable/dead_remote_exception_backport.csv | 1 + .../dead_search_incremental_top_docs_null.csv | 1 + .../AmazonBedrockEmbeddingsTaskSettings.java | 7 +++---- 13 files changed, 28 insertions(+), 31 deletions(-) create mode 100644 server/src/main/resources/transport/definitions/referable/amazon_bedrock_task_settings.csv create mode 100644 server/src/main/resources/transport/definitions/referable/batched_query_phase_version.csv create mode 100644 server/src/main/resources/transport/definitions/referable/search_incremental_top_docs_null.csv create mode 100644 server/src/main/resources/transport/definitions/referable/semantic_text_chunking_config.csv create mode 100644 server/src/main/resources/transport/definitions/unreferable/dead_remote_exception.csv create mode 100644 server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_backport.csv create mode 100644 server/src/main/resources/transport/definitions/unreferable/dead_search_incremental_top_docs_null.csv diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 3169d233713fe..900746d6267f2 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -161,11 +161,6 @@ static TransportVersion def(int id) { public static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA_8_19 = def(8_841_0_13); public static final TransportVersion INTRODUCE_LIFECYCLE_TEMPLATE_8_19 = def(8_841_0_14); public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED_8_19 = def(8_841_0_15); - public static final TransportVersion REMOTE_EXCEPTION_8_19 = def(8_841_0_16); - public static final TransportVersion AMAZON_BEDROCK_TASK_SETTINGS_8_19 = def(8_841_0_17); - public static final TransportVersion SEMANTIC_TEXT_CHUNKING_CONFIG_8_19 = def(8_841_0_18); - public static final TransportVersion BATCHED_QUERY_PHASE_VERSION_BACKPORT_8_X = def(8_841_0_19); - public static final TransportVersion SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19 = def(8_841_0_20); public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00); public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = def(9_006_0_00); public static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = def(9_007_00_0); @@ -194,18 +189,12 @@ static TransportVersion def(int id) { public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = def(9_037_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 BATCHED_QUERY_PHASE_VERSION = def(9_043_0_00); - public static final TransportVersion REMOTE_EXCEPTION = def(9_044_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 SEMANTIC_TEXT_CHUNKING_CONFIG = def(9_047_0_00); public static final TransportVersion REPO_ANALYSIS_COPY_BLOB = def(9_048_0_00); - public static final TransportVersion AMAZON_BEDROCK_TASK_SETTINGS = def(9_049_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 DEAD_SEARCH_INCREMENTAL_TOP_DOCS_NULL = def(9_054_0_00); public static final TransportVersion BATCHED_QUERY_EXECUTION_DELAYABLE_WRITABLE = def(9_057_0_00); - public static final TransportVersion SEARCH_INCREMENTAL_TOP_DOCS_NULL = def(9_058_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); diff --git a/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java b/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java index a8f22eb1cc572..573c6a728c136 100644 --- a/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java +++ b/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java @@ -14,7 +14,7 @@ import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopFieldDocs; import org.elasticsearch.ExceptionsHelper; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.IndicesRequest; @@ -82,6 +82,8 @@ public class SearchQueryThenFetchAsyncAction extends AbstractSearchAsyncAction shardIndexMap) { return; } // must check both node and transport versions to correctly deal with BwC on proxy connections - if (connection.getTransportVersion().before(TransportVersions.BATCHED_QUERY_PHASE_VERSION) + if (connection.getTransportVersion().supports(BATCHED_QUERY_PHASE_VERSION) == false || connection.getNode().getVersionInformation().nodeVersion().before(Version.V_9_1_0)) { executeWithoutBatching(routing, request); return; diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java index c22e799dc9506..7e0aa32c6a4f5 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java @@ -9,6 +9,7 @@ package org.elasticsearch.cluster.metadata; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.SimpleDiffable; @@ -26,9 +27,6 @@ import java.util.Map; import java.util.Objects; -import static org.elasticsearch.TransportVersions.SEMANTIC_TEXT_CHUNKING_CONFIG; -import static org.elasticsearch.TransportVersions.SEMANTIC_TEXT_CHUNKING_CONFIG_8_19; - /** * Contains inference field data for fields. * As inference is done in the coordinator node to avoid re-doing it at shard / replica level, the coordinator needs to check for the need @@ -42,6 +40,8 @@ public final class InferenceFieldMetadata implements SimpleDiffable map) { if (map == null || map.isEmpty()) { @@ -80,13 +80,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.AMAZON_BEDROCK_TASK_SETTINGS; + return AMAZON_BEDROCK_TASK_SETTINGS; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.AMAZON_BEDROCK_TASK_SETTINGS) - || version.isPatchFrom(TransportVersions.AMAZON_BEDROCK_TASK_SETTINGS_8_19); + return version.supports(AMAZON_BEDROCK_TASK_SETTINGS); } @Override From d0f17404cc93a6a9e20bc238208809bf80ddcea5 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 13:15:00 -0700 Subject: [PATCH 4/9] split dead versions --- ...mote_exception_backport.csv => dead_remote_exception_8_19.csv} | 0 .../{dead_remote_exception.csv => dead_remote_exception_9_1.csv} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename server/src/main/resources/transport/definitions/unreferable/{dead_remote_exception_backport.csv => dead_remote_exception_8_19.csv} (100%) rename server/src/main/resources/transport/definitions/unreferable/{dead_remote_exception.csv => dead_remote_exception_9_1.csv} (100%) diff --git a/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_backport.csv b/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_8_19.csv similarity index 100% rename from server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_backport.csv rename to server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_8_19.csv diff --git a/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception.csv b/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_9_1.csv similarity index 100% rename from server/src/main/resources/transport/definitions/unreferable/dead_remote_exception.csv rename to server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_9_1.csv From 8cd155882c00b0889b5eb70cb0e12d92f1686085 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 13:41:40 -0700 Subject: [PATCH 5/9] Migrate transport versions 8841_015 through 8841_011 --- .../org/elasticsearch/TransportVersions.java | 10 ----- .../cluster/metadata/DataStreamLifecycle.java | 26 +++++-------- .../inference/MinimalServiceSettings.java | 11 +++--- .../esql_aggregate_metric_double_literal.csv | 1 + .../referable/esql_failure_from_remote.csv | 1 + .../inference_model_registry_metadata.csv | 1 + .../introduce_lifecycle_template.csv | 1 + .../referable/rerank_common_options_added.csv | 1 + .../cluster/metadata/IndexMetadataTests.java | 5 ++- .../inference/action/InferenceAction.java | 8 ++-- .../action/InferenceActionRequestTests.java | 37 ++++++++++--------- .../AggregateMetricDoubleBlockBuilder.java | 8 +++- .../xpack/esql/plugin/ComputeResponse.java | 8 ++-- .../registry/ModelRegistryMetadata.java | 15 ++++---- 14 files changed, 64 insertions(+), 69 deletions(-) create mode 100644 server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_literal.csv create mode 100644 server/src/main/resources/transport/definitions/referable/esql_failure_from_remote.csv create mode 100644 server/src/main/resources/transport/definitions/referable/inference_model_registry_metadata.csv create mode 100644 server/src/main/resources/transport/definitions/referable/introduce_lifecycle_template.csv create mode 100644 server/src/main/resources/transport/definitions/referable/rerank_common_options_added.csv diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 900746d6267f2..54c2df8307cda 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -156,11 +156,6 @@ static TransportVersion def(int id) { public static final TransportVersion INFERENCE_CONTEXT_8_X = def(8_841_0_08); public static final TransportVersion ML_INFERENCE_DEEPSEEK_8_19 = def(8_841_0_09); public static final TransportVersion ESQL_SERIALIZE_BLOCK_TYPE_CODE_8_19 = def(8_841_0_10); - public static final TransportVersion ESQL_FAILURE_FROM_REMOTE_8_19 = def(8_841_0_11); - public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL_8_19 = def(8_841_0_12); - public static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA_8_19 = def(8_841_0_13); - public static final TransportVersion INTRODUCE_LIFECYCLE_TEMPLATE_8_19 = def(8_841_0_14); - public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED_8_19 = def(8_841_0_15); public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00); public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = def(9_006_0_00); public static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = def(9_007_00_0); @@ -179,14 +174,9 @@ static TransportVersion def(int id) { public static final TransportVersion ESQL_THREAD_NAME_IN_DRIVER_PROFILE = def(9_027_0_00); public static final TransportVersion INFERENCE_CONTEXT = def(9_028_0_00); public static final TransportVersion ML_INFERENCE_DEEPSEEK = def(9_029_00_0); - public static final TransportVersion ESQL_FAILURE_FROM_REMOTE = def(9_030_00_0); public static final TransportVersion INDEX_RESHARDING_METADATA = def(9_031_0_00); - public static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA = def(9_032_0_00); - public static final TransportVersion INTRODUCE_LIFECYCLE_TEMPLATE = def(9_033_0_00); public static final TransportVersion INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD = def(9_034_0_00); - public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL = def(9_035_0_00); public static final TransportVersion INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD = def(9_036_0_00); - public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = def(9_037_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); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java index 7d527dd43ce8e..7e60ddf0818d1 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java @@ -73,6 +73,8 @@ public class DataStreamLifecycle implements SimpleDiffable, private static final String DOWNSAMPLING_NOT_SUPPORTED_ERROR_MESSAGE = "Failure store lifecycle does not support downsampling, please remove the downsampling configuration."; + private static final TransportVersion INTRODUCE_LIFECYCLE_TEMPLATE = TransportVersion.fromName("introduce_lifecycle_template"); + /** * Check if {@link #DATA_STREAMS_LIFECYCLE_ONLY_SETTING_NAME} is present and set to {@code true}, indicating that * we're running in a cluster configuration that is only expecting to use data streams lifecycles. @@ -329,8 +331,7 @@ public int hashCode() { @Override public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { out.writeOptionalTimeValue(dataRetention); } else { writeLegacyOptionalValue(dataRetention, out, StreamOutput::writeTimeValue); @@ -338,8 +339,7 @@ public void writeTo(StreamOutput out) throws IOException { } if (out.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { out.writeOptionalCollection(downsampling); } else { writeLegacyOptionalValue(downsampling, out, StreamOutput::writeCollection); @@ -353,8 +353,7 @@ public void writeTo(StreamOutput out) throws IOException { public DataStreamLifecycle(StreamInput in) throws IOException { if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { dataRetention = in.readOptionalTimeValue(); } else { dataRetention = readLegacyOptionalValue(in, StreamInput::readTimeValue); @@ -363,8 +362,7 @@ public DataStreamLifecycle(StreamInput in) throws IOException { dataRetention = null; } if (in.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { downsampling = in.readOptionalCollectionAsList(DownsamplingRound::read); } else { downsampling = readLegacyOptionalValue(in, is -> is.readCollectionAsList(DownsamplingRound::read)); @@ -721,16 +719,14 @@ public record Template( public void writeTo(StreamOutput out) throws IOException { // The order of the fields is like this for bwc reasons if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { ResettableValue.write(out, dataRetention, StreamOutput::writeTimeValue); } else { writeLegacyValue(out, dataRetention, StreamOutput::writeTimeValue); } } if (out.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { ResettableValue.write(out, downsampling, StreamOutput::writeCollection); } else { writeLegacyValue(out, downsampling, StreamOutput::writeCollection); @@ -783,16 +779,14 @@ public static Template read(StreamInput in) throws IOException { // The order of the fields is like this for bwc reasons if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { dataRetention = ResettableValue.read(in, StreamInput::readTimeValue); } else { dataRetention = readLegacyValues(in, StreamInput::readTimeValue); } } if (in.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { downsampling = ResettableValue.read(in, i -> i.readCollectionAsList(DownsamplingRound::read)); } else { downsampling = readLegacyValues(in, i -> i.readCollectionAsList(DownsamplingRound::read)); diff --git a/server/src/main/java/org/elasticsearch/inference/MinimalServiceSettings.java b/server/src/main/java/org/elasticsearch/inference/MinimalServiceSettings.java index b9d2696b347c7..c05c800fc3424 100644 --- a/server/src/main/java/org/elasticsearch/inference/MinimalServiceSettings.java +++ b/server/src/main/java/org/elasticsearch/inference/MinimalServiceSettings.java @@ -10,7 +10,6 @@ package org.elasticsearch.inference; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.SimpleDiffable; import org.elasticsearch.common.io.stream.StreamInput; @@ -26,8 +25,6 @@ import java.io.IOException; import java.util.Objects; -import static org.elasticsearch.TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA; -import static org.elasticsearch.TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA_8_19; import static org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; import static org.elasticsearch.inference.TaskType.CHAT_COMPLETION; import static org.elasticsearch.inference.TaskType.COMPLETION; @@ -97,6 +94,10 @@ public static MinimalServiceSettings parse(XContentParser parser) throws IOExcep return PARSER.parse(parser, null); } + private static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA = TransportVersion.fromName( + "inference_model_registry_metadata" + ); + public static MinimalServiceSettings textEmbedding( String serviceName, int dimensions, @@ -163,12 +164,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA_8_19; + return INFERENCE_MODEL_REGISTRY_METADATA; } @Override public boolean supportsVersion(TransportVersion version) { - return version.isPatchFrom(INFERENCE_MODEL_REGISTRY_METADATA_8_19) || version.onOrAfter(INFERENCE_MODEL_REGISTRY_METADATA); + return version.supports(INFERENCE_MODEL_REGISTRY_METADATA); } @Override diff --git a/server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_literal.csv b/server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_literal.csv new file mode 100644 index 0000000000000..dbdbba968c132 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_aggregate_metric_double_literal.csv @@ -0,0 +1 @@ +9035000,8841012 diff --git a/server/src/main/resources/transport/definitions/referable/esql_failure_from_remote.csv b/server/src/main/resources/transport/definitions/referable/esql_failure_from_remote.csv new file mode 100644 index 0000000000000..3afcf4081d1d3 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_failure_from_remote.csv @@ -0,0 +1 @@ +9030000,8841011 diff --git a/server/src/main/resources/transport/definitions/referable/inference_model_registry_metadata.csv b/server/src/main/resources/transport/definitions/referable/inference_model_registry_metadata.csv new file mode 100644 index 0000000000000..d6d1f552440f7 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/inference_model_registry_metadata.csv @@ -0,0 +1 @@ +9032000,8841013 diff --git a/server/src/main/resources/transport/definitions/referable/introduce_lifecycle_template.csv b/server/src/main/resources/transport/definitions/referable/introduce_lifecycle_template.csv new file mode 100644 index 0000000000000..b97823b66be57 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/introduce_lifecycle_template.csv @@ -0,0 +1 @@ +9033000,8841014 diff --git a/server/src/main/resources/transport/definitions/referable/rerank_common_options_added.csv b/server/src/main/resources/transport/definitions/referable/rerank_common_options_added.csv new file mode 100644 index 0000000000000..417d7133f1129 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/rerank_common_options_added.csv @@ -0,0 +1 @@ +9037000,8841015 diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java index 39da67a81bec0..d0aae463dd193 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.metadata; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.admin.indices.rollover.MaxAgeCondition; import org.elasticsearch.action.admin.indices.rollover.MaxDocsCondition; import org.elasticsearch.action.admin.indices.rollover.MaxPrimaryShardDocsCondition; @@ -67,6 +66,8 @@ public class IndexMetadataTests extends ESTestCase { + private static final TransportVersion ESQL_FAILURE_FROM_REMOTE = TransportVersion.fromName("esql_failure_from_remote"); + @Before public void setUp() throws Exception { super.setUp(); @@ -687,7 +688,7 @@ public void testReshardingBWCSerialization() throws IOException { IndexMetadata idx = IndexMetadata.builder("test").settings(settings).reshardingMetadata(reshardingMetadata).build(); // the version prior to TransportVersions.INDEX_RESHARDING_METADATA - final var version = TransportVersions.ESQL_FAILURE_FROM_REMOTE; + final var version = ESQL_FAILURE_FROM_REMOTE; // should round trip final var deserialized = roundTripWithVersion(idx, version); diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java index c23996a3ce87a..c3066a56447c9 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java @@ -94,6 +94,8 @@ public static Builder parseRequest(String inferenceEntityId, TaskType taskType, return builder; } + private static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = TransportVersion.fromName("rerank_common_options_added"); + private final TaskType taskType; private final String inferenceEntityId; private final String query; @@ -182,8 +184,7 @@ public Request(StreamInput in) throws IOException { this.inferenceTimeout = DEFAULT_TIMEOUT; } - if (in.getTransportVersion().onOrAfter(TransportVersions.RERANK_COMMON_OPTIONS_ADDED) - || in.getTransportVersion().isPatchFrom(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19)) { + if (in.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { this.returnDocuments = in.readOptionalBoolean(); this.topN = in.readOptionalInt(); } else { @@ -313,8 +314,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeTimeValue(inferenceTimeout); } - if (out.getTransportVersion().onOrAfter(TransportVersions.RERANK_COMMON_OPTIONS_ADDED) - || out.getTransportVersion().isPatchFrom(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19)) { + if (out.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { out.writeOptionalBoolean(returnDocuments); out.writeOptionalInt(topN); } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java index a1451efaa30ce..003f5987845d0 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java @@ -33,6 +33,8 @@ public class InferenceActionRequestTests extends AbstractBWCWireSerializationTestCase { + private static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = TransportVersion.fromName("rerank_common_options_added"); + @Override protected Writeable.Reader instanceReader() { return InferenceAction.Request::new; @@ -711,24 +713,23 @@ protected InferenceAction.Request mutateInstanceForVersion(InferenceAction.Reque false, InferenceContext.EMPTY_INSTANCE ); - } else if (version.before(TransportVersions.RERANK_COMMON_OPTIONS_ADDED) - && version.isPatchFrom(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19) == false) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - instance.getQuery(), - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - instance.getInferenceTimeout(), - false, - instance.getContext() - ); - } else { - mutated = instance; - } + } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { + mutated = new InferenceAction.Request( + instance.getTaskType(), + instance.getInferenceEntityId(), + instance.getQuery(), + null, + null, + instance.getInput(), + instance.getTaskSettings(), + instance.getInputType(), + instance.getInferenceTimeout(), + false, + instance.getContext() + ); + } else { + mutated = instance; + } return mutated; } diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java index ba0925873a44e..c5e84fdf5a741 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java @@ -8,7 +8,6 @@ package org.elasticsearch.compute.data; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.GenericNamedWriteable; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; @@ -211,6 +210,11 @@ public String getLabel() { * For all other purposes it is preferred to use the individual builders over the literal for generating blocks when possible. */ public record AggregateMetricDoubleLiteral(Double min, Double max, Double sum, Integer count) implements GenericNamedWriteable { + + private static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL = TransportVersion.fromName( + "esql_aggregate_metric_double_literal" + ); + public AggregateMetricDoubleLiteral { min = (min == null || min.isNaN()) ? null : min; max = (max == null || max.isNaN()) ? null : max; @@ -242,7 +246,7 @@ public void writeTo(StreamOutput out) throws IOException { @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL); + return version.supports(ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL); } @Override diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java index 573f0197a7a78..968231ea3c4a2 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.esql.plugin; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.search.ShardSearchFailure; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -25,6 +24,7 @@ */ final class ComputeResponse extends TransportResponse { + private static final TransportVersion ESQL_FAILURE_FROM_REMOTE = TransportVersion.fromName("esql_failure_from_remote"); private static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = TransportVersion.fromName( "esql_documents_found_and_values_loaded" ); @@ -76,8 +76,7 @@ final class ComputeResponse extends TransportResponse { this.successfulShards = in.readVInt(); this.skippedShards = in.readVInt(); this.failedShards = in.readVInt(); - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_FAILURE_FROM_REMOTE) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_FAILURE_FROM_REMOTE_8_19)) { + if (in.getTransportVersion().supports(ESQL_FAILURE_FROM_REMOTE)) { this.failures = in.readCollectionAsImmutableList(ShardSearchFailure::readShardSearchFailure); } else { this.failures = List.of(); @@ -97,8 +96,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVInt(successfulShards); out.writeVInt(skippedShards); out.writeVInt(failedShards); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_FAILURE_FROM_REMOTE) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_FAILURE_FROM_REMOTE_8_19)) { + if (out.getTransportVersion().supports(ESQL_FAILURE_FROM_REMOTE)) { out.writeCollection(failures, (o, v) -> v.writeTo(o)); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java index 5ed5ebdfd1993..7f67b876bcad5 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.registry; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.DiffableUtils; import org.elasticsearch.cluster.NamedDiff; @@ -38,8 +37,6 @@ import java.util.Objects; import java.util.Set; -import static org.elasticsearch.TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA; -import static org.elasticsearch.TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA_8_19; import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg; import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstructorArg; @@ -91,6 +88,10 @@ public static ModelRegistryMetadata fromState(ProjectMetadata projectMetadata) { return resp != null ? resp : EMPTY_NOT_UPGRADED; } + private static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA = TransportVersion.fromName( + "inference_model_registry_metadata" + ); + public ModelRegistryMetadata withAddedModel(String inferenceEntityId, MinimalServiceSettings settings) { final var existing = modelMap.get(inferenceEntityId); if (existing != null && settings.equals(existing)) { @@ -187,7 +188,7 @@ public Iterator toXContentChunked(ToXContent.Params ignore } /** - * Determines whether all models created prior to {@link TransportVersions#INFERENCE_MODEL_REGISTRY_METADATA} + * Determines whether all models created prior to {@link #INFERENCE_MODEL_REGISTRY_METADATA} * have been successfully restored from the {@link InferenceIndex}. * * @return true if all such models have been restored; false otherwise. @@ -237,7 +238,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return INFERENCE_MODEL_REGISTRY_METADATA_8_19; + return INFERENCE_MODEL_REGISTRY_METADATA; } @Override @@ -308,7 +309,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return INFERENCE_MODEL_REGISTRY_METADATA_8_19; + return INFERENCE_MODEL_REGISTRY_METADATA; } @Override @@ -328,6 +329,6 @@ public Metadata.ProjectCustom apply(Metadata.ProjectCustom part) { } static boolean shouldSerialize(TransportVersion version) { - return version.isPatchFrom(INFERENCE_MODEL_REGISTRY_METADATA_8_19) || version.onOrAfter(INFERENCE_MODEL_REGISTRY_METADATA); + return version.supports(INFERENCE_MODEL_REGISTRY_METADATA); } } From 2832bebafae351d45c71f4fc31fbcf7ab6cc6417 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 13:58:48 -0700 Subject: [PATCH 6/9] Migrate transport versions 8841_010 through 8841_006 --- .../org/elasticsearch/TransportVersions.java | 12 ---- .../esql_serialize_block_type_code.csv | 1 + .../referable/inference_context.csv | 1 + .../jina_ai_embedding_type_support_added.csv | 1 + .../referable/ml_inference_deepseek.csv | 1 + .../retry_ilm_async_action_require_error.csv | 2 +- .../core/ilm/action/RetryActionRequest.java | 9 +-- .../action/BaseInferenceActionRequest.java | 7 +- .../action/InferenceActionProxy.java | 10 +-- .../action/InferenceActionRequestTests.java | 64 +++++++++---------- .../UnifiedCompletionActionRequestTests.java | 4 +- .../compute/data/ElementType.java | 10 +-- .../deepseek/DeepSeekChatCompletionModel.java | 7 +- .../services/deepseek/DeepSeekService.java | 4 +- .../embeddings/JinaAIEmbeddingType.java | 8 ++- .../JinaAIEmbeddingsServiceSettings.java | 14 ++-- .../JinaAIEmbeddingsServiceSettingsTests.java | 9 ++- 17 files changed, 79 insertions(+), 85 deletions(-) create mode 100644 server/src/main/resources/transport/definitions/referable/esql_serialize_block_type_code.csv create mode 100644 server/src/main/resources/transport/definitions/referable/inference_context.csv create mode 100644 server/src/main/resources/transport/definitions/referable/jina_ai_embedding_type_support_added.csv create mode 100644 server/src/main/resources/transport/definitions/referable/ml_inference_deepseek.csv diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 54c2df8307cda..f6c05f2fa0b93 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -141,8 +141,6 @@ static TransportVersion def(int id) { public static final TransportVersion ML_INFERENCE_IBM_WATSONX_RERANK_ADDED = def(8_840_0_00); // TODO: add to remove_all_applicable_selector.csv public static final TransportVersion REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_18 = def(8_840_0_01); - // TODO: add to retry_ilm_async_action_require_error.csv - public static final TransportVersion RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_18 = def(8_840_0_02); public static final TransportVersion INITIAL_ELASTICSEARCH_8_19 = def(8_841_0_00); public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X = def(8_841_0_01); // TODO: add to remove_all_applicable_selector.csv @@ -150,12 +148,6 @@ static TransportVersion def(int id) { public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE_BACKPORT_8_19 = def(8_841_0_03); public static final TransportVersion ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19 = def(8_841_0_04); public static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X = def(8_841_0_05); - public static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19 = def(8_841_0_06); - // TODO: add to retry_ilm_async_action_require_error.csv - public static final TransportVersion RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_19 = def(8_841_0_07); - public static final TransportVersion INFERENCE_CONTEXT_8_X = def(8_841_0_08); - public static final TransportVersion ML_INFERENCE_DEEPSEEK_8_19 = def(8_841_0_09); - public static final TransportVersion ESQL_SERIALIZE_BLOCK_TYPE_CODE_8_19 = def(8_841_0_10); public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00); public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = def(9_006_0_00); public static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = def(9_007_00_0); @@ -167,13 +159,9 @@ static TransportVersion def(int id) { 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 JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_020_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_SERIALIZE_BLOCK_TYPE_CODE = def(9_026_0_00); public static final TransportVersion ESQL_THREAD_NAME_IN_DRIVER_PROFILE = def(9_027_0_00); - public static final TransportVersion INFERENCE_CONTEXT = def(9_028_0_00); - public static final TransportVersion ML_INFERENCE_DEEPSEEK = def(9_029_00_0); 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); diff --git a/server/src/main/resources/transport/definitions/referable/esql_serialize_block_type_code.csv b/server/src/main/resources/transport/definitions/referable/esql_serialize_block_type_code.csv new file mode 100644 index 0000000000000..949f2ac7aabe2 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_serialize_block_type_code.csv @@ -0,0 +1 @@ +9026000,8841010 diff --git a/server/src/main/resources/transport/definitions/referable/inference_context.csv b/server/src/main/resources/transport/definitions/referable/inference_context.csv new file mode 100644 index 0000000000000..c820bb70fa461 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/inference_context.csv @@ -0,0 +1 @@ +9028000,8841008 diff --git a/server/src/main/resources/transport/definitions/referable/jina_ai_embedding_type_support_added.csv b/server/src/main/resources/transport/definitions/referable/jina_ai_embedding_type_support_added.csv new file mode 100644 index 0000000000000..61fd612150d2e --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/jina_ai_embedding_type_support_added.csv @@ -0,0 +1 @@ +9020000,8841006 diff --git a/server/src/main/resources/transport/definitions/referable/ml_inference_deepseek.csv b/server/src/main/resources/transport/definitions/referable/ml_inference_deepseek.csv new file mode 100644 index 0000000000000..eacd76ea81f3f --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/ml_inference_deepseek.csv @@ -0,0 +1 @@ +9029000,8841009 diff --git a/server/src/main/resources/transport/definitions/referable/retry_ilm_async_action_require_error.csv b/server/src/main/resources/transport/definitions/referable/retry_ilm_async_action_require_error.csv index 3820bfbd192cd..d6fab97c9ccfd 100644 --- a/server/src/main/resources/transport/definitions/referable/retry_ilm_async_action_require_error.csv +++ b/server/src/main/resources/transport/definitions/referable/retry_ilm_async_action_require_error.csv @@ -1 +1 @@ -9025000,9000007 +9025000,9000007,8841007,8840002 diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java index c0ce92cc87df4..bba30f52c673e 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.core.ilm.action; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.IndicesRequest; import org.elasticsearch.action.support.IndicesOptions; @@ -40,9 +39,7 @@ public RetryActionRequest(StreamInput in) throws IOException { super(in); this.indices = in.readStringArray(); this.indicesOptions = IndicesOptions.readIndicesOptions(in); - if (in.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR) - || in.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_19) - || in.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_18)) { + if (in.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR)) { this.requireError = in.readBoolean(); } } @@ -86,9 +83,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeStringArray(indices); indicesOptions.writeIndicesOptions(out); - if (out.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR) - || out.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_19) - || out.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_18)) { + if (out.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR)) { out.writeBoolean(requireError); } } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java index 7745892507f25..9bbc7fa9e97f8 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java @@ -24,6 +24,7 @@ */ public abstract class BaseInferenceActionRequest extends LegacyActionRequest { + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); static final TransportVersion INFERENCE_REQUEST_ADAPTIVE_RATE_LIMITING_REMOVED = TransportVersion.fromName( "inference_request_adaptive_rate_limiting_removed" ); @@ -42,8 +43,7 @@ public BaseInferenceActionRequest(StreamInput in) throws IOException { in.readBoolean(); } - if (in.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || in.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (in.getTransportVersion().supports(INFERENCE_CONTEXT)) { this.context = new InferenceContext(in); } else { this.context = InferenceContext.EMPTY_INSTANCE; @@ -68,8 +68,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(true); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || out.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (out.getTransportVersion().supports(INFERENCE_CONTEXT)) { context.writeTo(out); } } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java index d8ebe8c0123f6..890a493f0c25d 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.core.inference.action; -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,8 @@ public InferenceActionProxy() { public static class Request extends LegacyActionRequest { + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); + private final TaskType taskType; private final String inferenceEntityId; private final BytesReference content; @@ -77,8 +79,7 @@ public Request(StreamInput in) throws IOException { // streaming is not supported yet for transport traffic this.stream = false; - if (in.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || in.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (in.getTransportVersion().supports(INFERENCE_CONTEXT)) { this.context = new InferenceContext(in); } else { this.context = InferenceContext.EMPTY_INSTANCE; @@ -127,8 +128,7 @@ public void writeTo(StreamOutput out) throws IOException { XContentHelper.writeTo(out, contentType); out.writeTimeValue(timeout); - if (out.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || out.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (out.getTransportVersion().supports(INFERENCE_CONTEXT)) { context.writeTo(out); } } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java index 003f5987845d0..6044b4ab33061 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java @@ -33,6 +33,7 @@ public class InferenceActionRequestTests extends AbstractBWCWireSerializationTestCase { + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); private static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = TransportVersion.fromName("rerank_common_options_added"); @Override @@ -698,38 +699,37 @@ protected InferenceAction.Request mutateInstanceForVersion(InferenceAction.Reque InferenceAction.Request.DEFAULT_TIMEOUT, false ); - } else if (version.before(TransportVersions.INFERENCE_CONTEXT) - && version.isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X) == false) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - instance.getQuery(), - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - instance.getInferenceTimeout(), - false, - InferenceContext.EMPTY_INSTANCE - ); - } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - instance.getQuery(), - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - instance.getInferenceTimeout(), - false, - instance.getContext() - ); - } else { - mutated = instance; - } + } else if (version.supports(INFERENCE_CONTEXT) == false) { + mutated = new InferenceAction.Request( + instance.getTaskType(), + instance.getInferenceEntityId(), + instance.getQuery(), + null, + null, + instance.getInput(), + instance.getTaskSettings(), + instance.getInputType(), + instance.getInferenceTimeout(), + false, + InferenceContext.EMPTY_INSTANCE + ); + } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { + mutated = new InferenceAction.Request( + instance.getTaskType(), + instance.getInferenceEntityId(), + instance.getQuery(), + null, + null, + instance.getInput(), + instance.getTaskSettings(), + instance.getInputType(), + instance.getInferenceTimeout(), + false, + instance.getContext() + ); + } else { + mutated = instance; + } return mutated; } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java index ac5afeb73eb53..4d3589d5eeb4c 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java @@ -25,6 +25,8 @@ public class UnifiedCompletionActionRequestTests extends AbstractBWCWireSerializationTestCase { + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); + public void testValidation_ReturnsException_When_UnifiedCompletionRequestMessage_Is_Null() { var request = new UnifiedCompletionAction.Request( "inference_id", @@ -88,7 +90,7 @@ public void testWriteTo_WhenVersionIsBeforeInferenceContext_ShouldSetContextToEm @Override protected UnifiedCompletionAction.Request mutateInstanceForVersion(UnifiedCompletionAction.Request instance, TransportVersion version) { - if (version.before(TransportVersions.INFERENCE_CONTEXT)) { + if (version.supports(INFERENCE_CONTEXT) == false) { return new UnifiedCompletionAction.Request( instance.getInferenceEntityId(), instance.getTaskType(), diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java index e651a65cf69b2..5202231067787 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java @@ -8,7 +8,7 @@ package org.elasticsearch.compute.data; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -66,6 +66,8 @@ public enum ElementType { AggregateMetricDoubleArrayBlock::readFrom ); + private static final TransportVersion ESQL_SERIALIZE_BLOCK_TYPE_CODE = TransportVersion.fromName("esql_serialize_block_type_code"); + private interface BuilderSupplier { Block.Builder newBlockBuilder(BlockFactory blockFactory, int estimatedSize); } @@ -137,8 +139,7 @@ public String pascalCaseName() { * Read element type from an input stream */ static ElementType readFrom(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE_8_19)) { + if (in.getTransportVersion().supports(ESQL_SERIALIZE_BLOCK_TYPE_CODE)) { byte b = in.readByte(); return values()[b]; } else { @@ -152,8 +153,7 @@ static ElementType readFrom(StreamInput in) throws IOException { } void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE_8_19)) { + if (out.getTransportVersion().supports(ESQL_SERIALIZE_BLOCK_TYPE_CODE)) { out.writeByte(writableCode); } else { out.writeString(legacyWritableName); diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java index 06f21e19a6408..246cd92ce94d4 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.deepseek; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; @@ -160,6 +159,7 @@ public RateLimitSettings rateLimitSettings() { private record DeepSeekServiceSettings(String modelId, URI uri) implements ServiceSettings { private static final String NAME = "deep_seek_service_settings"; + private static final TransportVersion ML_INFERENCE_DEEPSEEK = TransportVersion.fromName("ml_inference_deepseek"); DeepSeekServiceSettings { Objects.requireNonNull(modelId); @@ -177,13 +177,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_DEEPSEEK; + return ML_INFERENCE_DEEPSEEK; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_DEEPSEEK) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_DEEPSEEK_8_19); + return version.supports(ML_INFERENCE_DEEPSEEK); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java index 54972e23a25d1..ae5928e52f0d4 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.deepseek; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.ValidationException; @@ -59,6 +58,7 @@ public class DeepSeekService extends SenderService { TaskType.CHAT_COMPLETION ); private static final EnumSet SUPPORTED_TASK_TYPES_FOR_STREAMING = EnumSet.of(TaskType.COMPLETION, TaskType.CHAT_COMPLETION); + private static final TransportVersion ML_INFERENCE_DEEPSEEK = TransportVersion.fromName("ml_inference_deepseek"); public DeepSeekService( HttpRequestSender.Factory factory, @@ -177,7 +177,7 @@ public EnumSet supportedTaskTypes() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_DEEPSEEK; + return ML_INFERENCE_DEEPSEEK; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java index e9c869d59a6fc..b0924b5ac6f5b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.jinaai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; @@ -50,6 +49,10 @@ private static final class RequestConstants { ELEMENT_TYPE_TO_JINA_AI_EMBEDDING.keySet() ); + private static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "jina_ai_embedding_type_support_added" + ); + private final DenseVectorFieldMapper.ElementType elementType; private final String requestString; @@ -109,8 +112,7 @@ public DenseVectorFieldMapper.ElementType toElementType() { * @return the embedding type that is known to the version passed in */ public static JinaAIEmbeddingType translateToVersion(JinaAIEmbeddingType embeddingType, TransportVersion version) { - if (version.onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || version.isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) { + if (version.supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) { return embeddingType; } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java index 09164f9bbc45a..181404018da97 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java @@ -69,6 +69,10 @@ static JinaAIEmbeddingType parseEmbeddingType(Map map, Validatio ); } + private static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "jina_ai_embedding_type_support_added" + ); + private final JinaAIServiceSettings commonSettings; private final SimilarityMeasure similarity; private final Integer dimensions; @@ -95,10 +99,9 @@ public JinaAIEmbeddingsServiceSettings(StreamInput in) throws IOException { this.dimensions = in.readOptionalVInt(); this.maxInputTokens = in.readOptionalVInt(); - this.embeddingType = (in.getTransportVersion().onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || in.getTransportVersion().isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) - ? Objects.requireNonNullElse(in.readOptionalEnum(JinaAIEmbeddingType.class), JinaAIEmbeddingType.FLOAT) - : JinaAIEmbeddingType.FLOAT; + this.embeddingType = (in.getTransportVersion().supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) + ? Objects.requireNonNullElse(in.readOptionalEnum(JinaAIEmbeddingType.class), JinaAIEmbeddingType.FLOAT) + : JinaAIEmbeddingType.FLOAT; } public JinaAIServiceSettings getCommonSettings() { @@ -181,8 +184,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalVInt(dimensions); out.writeOptionalVInt(maxInputTokens); - if (out.getTransportVersion().onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || out.getTransportVersion().isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) { out.writeOptionalEnum(JinaAIEmbeddingType.translateToVersion(embeddingType, out.getTransportVersion())); } } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java index a1bcc6d9636c0..5e2489b10283e 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.jinaai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; @@ -38,6 +37,11 @@ import static org.hamcrest.Matchers.is; public class JinaAIEmbeddingsServiceSettingsTests extends AbstractBWCWireSerializationTestCase { + + private static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "jina_ai_embedding_type_support_added" + ); + public static JinaAIEmbeddingsServiceSettings createRandom() { SimilarityMeasure similarityMeasure = null; Integer dims = null; @@ -221,8 +225,7 @@ protected JinaAIEmbeddingsServiceSettings mutateInstance(JinaAIEmbeddingsService @Override protected JinaAIEmbeddingsServiceSettings mutateInstanceForVersion(JinaAIEmbeddingsServiceSettings instance, TransportVersion version) { - if (version.onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || version.isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) { + if (version.supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) { return instance; } From d5f7054bc656bfca8e533b68a86c87685fad6ed6 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 14:22:25 -0700 Subject: [PATCH 7/9] Migrate transport versions 8841_005 through 8841_000 --- .../org/elasticsearch/TransportVersions.java | 13 ------------- .../action/support/IndexComponentSelector.java | 5 +---- .../cohere_bit_embedding_type_support_added.csv | 1 + .../esql_retry_on_shard_level_failure.csv | 1 + .../referable/esql_support_partial_results.csv | 1 + .../referable/remove_all_applicable_selector.csv | 2 +- .../referable/voyage_ai_integration_added.csv | 1 + .../unreferable/initial_elasticsearch_8_19_0.csv | 1 + .../esql/plugin/DataNodeComputeHandler.java | 9 ++++++--- .../xpack/esql/session/Configuration.java | 9 ++++----- .../cohere/embeddings/CohereEmbeddingType.java | 7 +++++-- .../services/voyageai/VoyageAIService.java | 5 +++-- .../voyageai/VoyageAIServiceSettings.java | 7 +++---- .../VoyageAIEmbeddingsServiceSettings.java | 8 ++++---- .../VoyageAIEmbeddingsTaskSettings.java | 7 +++---- .../rerank/VoyageAIRerankServiceSettings.java | 8 ++++---- .../rerank/VoyageAIRerankTaskSettings.java | 8 ++++---- .../embeddings/CohereEmbeddingTypeTests.java | 16 ++++++++++------ 18 files changed, 53 insertions(+), 56 deletions(-) create mode 100644 server/src/main/resources/transport/definitions/referable/cohere_bit_embedding_type_support_added.csv create mode 100644 server/src/main/resources/transport/definitions/referable/esql_retry_on_shard_level_failure.csv create mode 100644 server/src/main/resources/transport/definitions/referable/esql_support_partial_results.csv create mode 100644 server/src/main/resources/transport/definitions/referable/voyage_ai_integration_added.csv create mode 100644 server/src/main/resources/transport/definitions/unreferable/initial_elasticsearch_8_19_0.csv diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index f6c05f2fa0b93..2717d936c8cc0 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -139,23 +139,10 @@ 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); - // TODO: add to remove_all_applicable_selector.csv - public static final TransportVersion REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_18 = def(8_840_0_01); - public static final TransportVersion INITIAL_ELASTICSEARCH_8_19 = def(8_841_0_00); - public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X = def(8_841_0_01); - // TODO: add to remove_all_applicable_selector.csv - public static final TransportVersion REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_19 = def(8_841_0_02); - public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE_BACKPORT_8_19 = def(8_841_0_03); - public static final TransportVersion ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19 = def(8_841_0_04); - public static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X = def(8_841_0_05); - public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00); - public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = def(9_006_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 ESQL_SUPPORT_PARTIAL_RESULTS = def(9_011_0_00); public static final TransportVersion REMOVE_REPOSITORY_CONFLICT_MESSAGE = def(9_012_0_00); - public static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = def(9_014_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); diff --git a/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java b/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java index 5bf9dcbf2e982..58703cbef3ecf 100644 --- a/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java +++ b/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java @@ -10,7 +10,6 @@ package org.elasticsearch.action.support; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; @@ -95,9 +94,7 @@ public static IndexComponentSelector getByKeyOrThrow(@Nullable String key) { public static IndexComponentSelector read(StreamInput in) throws IOException { byte id = in.readByte(); - if (in.getTransportVersion().supports(REMOVE_ALL_APPLICABLE_SELECTOR) - || in.getTransportVersion().isPatchFrom(TransportVersions.REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_18) - || in.getTransportVersion().isPatchFrom(TransportVersions.REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(REMOVE_ALL_APPLICABLE_SELECTOR)) { return getById(id); } else { // Legacy value ::*, converted to ::data diff --git a/server/src/main/resources/transport/definitions/referable/cohere_bit_embedding_type_support_added.csv b/server/src/main/resources/transport/definitions/referable/cohere_bit_embedding_type_support_added.csv new file mode 100644 index 0000000000000..fdf1a6dc01fe2 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/cohere_bit_embedding_type_support_added.csv @@ -0,0 +1 @@ +9001000,8841001 diff --git a/server/src/main/resources/transport/definitions/referable/esql_retry_on_shard_level_failure.csv b/server/src/main/resources/transport/definitions/referable/esql_retry_on_shard_level_failure.csv new file mode 100644 index 0000000000000..7352a947a2142 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_retry_on_shard_level_failure.csv @@ -0,0 +1 @@ +9006000,8841003 diff --git a/server/src/main/resources/transport/definitions/referable/esql_support_partial_results.csv b/server/src/main/resources/transport/definitions/referable/esql_support_partial_results.csv new file mode 100644 index 0000000000000..614bb5844f0f7 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_support_partial_results.csv @@ -0,0 +1 @@ +9011000,8841004 diff --git a/server/src/main/resources/transport/definitions/referable/remove_all_applicable_selector.csv b/server/src/main/resources/transport/definitions/referable/remove_all_applicable_selector.csv index 3a931f7da0550..e7ae9b5a189fa 100644 --- a/server/src/main/resources/transport/definitions/referable/remove_all_applicable_selector.csv +++ b/server/src/main/resources/transport/definitions/referable/remove_all_applicable_selector.csv @@ -1 +1 @@ -9009000,9000005 +9009000,9000005,8841002,8840001 diff --git a/server/src/main/resources/transport/definitions/referable/voyage_ai_integration_added.csv b/server/src/main/resources/transport/definitions/referable/voyage_ai_integration_added.csv new file mode 100644 index 0000000000000..4dbe0b4cc618f --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/voyage_ai_integration_added.csv @@ -0,0 +1 @@ +9014000,8841005 diff --git a/server/src/main/resources/transport/definitions/unreferable/initial_elasticsearch_8_19_0.csv b/server/src/main/resources/transport/definitions/unreferable/initial_elasticsearch_8_19_0.csv new file mode 100644 index 0000000000000..16c1a5e6cdf1d --- /dev/null +++ b/server/src/main/resources/transport/definitions/unreferable/initial_elasticsearch_8_19_0.csv @@ -0,0 +1 @@ +8841000 diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java index 490edec311b36..6cb87aa9aa151 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.esql.plugin; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.ActionListenerResponseHandler; import org.elasticsearch.action.ActionRunnable; @@ -66,6 +65,11 @@ * and executing these computes on the data nodes. */ final class DataNodeComputeHandler implements TransportRequestHandler { + + private static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = TransportVersion.fromName( + "esql_retry_on_shard_level_failure" + ); + private final ComputeService computeService; private final SearchService searchService; private final ClusterService clusterService; @@ -534,7 +538,6 @@ public void messageReceived(DataNodeRequest request, TransportChannel channel, T } static boolean supportShardLevelRetryFailure(TransportVersion transportVersion) { - return transportVersion.onOrAfter(TransportVersions.ESQL_RETRY_ON_SHARD_LEVEL_FAILURE) - || transportVersion.isPatchFrom(TransportVersions.ESQL_RETRY_ON_SHARD_LEVEL_FAILURE_BACKPORT_8_19); + return transportVersion.supports(ESQL_RETRY_ON_SHARD_LEVEL_FAILURE); } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java index a9e7d57365340..563382f7886e6 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.esql.session; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.compress.CompressorFactory; import org.elasticsearch.common.io.stream.StreamInput; @@ -40,6 +39,8 @@ public class Configuration implements Writeable { private static final TransportVersion TIMESERIES_DEFAULT_LIMIT = TransportVersion.fromName("timeseries_default_limit"); + private static final TransportVersion ESQL_SUPPORT_PARTIAL_RESULTS = TransportVersion.fromName("esql_support_partial_results"); + private final String clusterName; private final String username; private final ZonedDateTime now; @@ -109,8 +110,7 @@ public Configuration(BlockStreamInput in) throws IOException { this.profile = in.readBoolean(); this.tables = in.readImmutableMap(i1 -> i1.readImmutableMap(i2 -> new Column((BlockStreamInput) i2))); this.queryStartTimeNanos = in.readLong(); - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_SUPPORT_PARTIAL_RESULTS)) { this.allowPartialResults = in.readBoolean(); } else { this.allowPartialResults = false; @@ -140,8 +140,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(profile); out.writeMap(tables, (o1, columns) -> o1.writeMap(columns, StreamOutput::writeWriteable)); out.writeLong(queryStartTimeNanos); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_SUPPORT_PARTIAL_RESULTS)) { out.writeBoolean(allowPartialResults); } if (out.getTransportVersion().supports(TIMESERIES_DEFAULT_LIMIT)) { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java index c3790bec9f193..c728d22845f7b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java @@ -64,6 +64,10 @@ private static final class RequestConstants { ELEMENT_TYPE_TO_COHERE_EMBEDDING.keySet() ); + private static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "cohere_bit_embedding_type_support_added" + ); + private final DenseVectorFieldMapper.ElementType elementType; private final String requestString; @@ -128,8 +132,7 @@ public static CohereEmbeddingType translateToVersion(CohereEmbeddingType embeddi } if (embeddingType == BIT) { - if (version.onOrAfter(TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED) - || version.isPatchFrom(TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X)) { + if (version.supports(COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED)) { // BIT embedding type is supported in these versions return embeddingType; } else { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java index f2db85f263f9f..24d82eb764498 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.ValidationException; @@ -109,6 +108,8 @@ public class VoyageAIService extends SenderService implements RerankingInference InputType.INTERNAL_SEARCH ); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public VoyageAIService( HttpRequestSender.Factory factory, ServiceComponents serviceComponents, @@ -364,7 +365,7 @@ static SimilarityMeasure defaultSimilarity() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java index ba7db5bc16f47..8676fadb675cd 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java @@ -10,7 +10,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -35,6 +34,7 @@ public class VoyageAIServiceSettings extends FilteredXContentObject implements S private static final Logger logger = LogManager.getLogger(VoyageAIServiceSettings.class); // See https://docs.voyageai.com/docs/rate-limits public static final RateLimitSettings DEFAULT_RATE_LIMIT_SETTINGS = new RateLimitSettings(2_000); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); public static VoyageAIServiceSettings fromMap(Map map, ConfigurationParseContext context) { ValidationException validationException = new ValidationException(); @@ -109,13 +109,12 @@ public XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder builder @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java index a0960fb6f74aa..e4da0d75a6b50 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -48,6 +47,8 @@ public class VoyageAIEmbeddingsServiceSettings extends FilteredXContentObject im public static final String EMBEDDING_TYPE = "embedding_type"; + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public static VoyageAIEmbeddingsServiceSettings fromMap(Map map, ConfigurationParseContext context) { return switch (context) { case REQUEST -> fromRequestMap(map, context); @@ -227,13 +228,12 @@ protected XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder buil @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java index 11728075fe2b8..b5b157537506d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -41,6 +40,7 @@ public class VoyageAIEmbeddingsTaskSettings implements TaskSettings { public static final String NAME = "voyageai_embeddings_task_settings"; public static final VoyageAIEmbeddingsTaskSettings EMPTY_SETTINGS = new VoyageAIEmbeddingsTaskSettings(null, null); static final String INPUT_TYPE = "input_type"; + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); public static VoyageAIEmbeddingsTaskSettings fromMap(Map map) { if (map == null || map.isEmpty()) { @@ -163,13 +163,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java index 4e23efac2701c..46da419a34a46 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java @@ -10,7 +10,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -31,6 +30,8 @@ public class VoyageAIRerankServiceSettings extends FilteredXContentObject implem private static final Logger logger = LogManager.getLogger(VoyageAIRerankServiceSettings.class); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public static VoyageAIRerankServiceSettings fromMap(Map map, ConfigurationParseContext context) { ValidationException validationException = new ValidationException(); @@ -91,13 +92,12 @@ protected XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder buil @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java index 9e57b58487674..4fe23564d2eeb 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai.rerank; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -38,6 +37,8 @@ public class VoyageAIRerankTaskSettings implements TaskSettings { public static final VoyageAIRerankTaskSettings EMPTY_SETTINGS = new VoyageAIRerankTaskSettings(null, null, null); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public static VoyageAIRerankTaskSettings fromMap(Map map) { ValidationException validationException = new ValidationException(); @@ -136,13 +137,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java index 13e6cbdefe62a..d19010ff7e269 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java @@ -15,6 +15,13 @@ import static org.hamcrest.Matchers.is; public class CohereEmbeddingTypeTests extends ESTestCase { + + private static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "cohere_bit_embedding_type_support_added" + ); + private static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_PATCH = COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED + .nextPatchVersion(); + public void testTranslateToVersion_ReturnsInt8_WhenVersionIsBeforeByteEnumAddition_WhenSpecifyingByte() { assertThat( CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BYTE, new TransportVersion(8_613_00_0)), @@ -66,24 +73,21 @@ public void testTranslateToVersion_ReturnsInt8_WhenVersionIsBeforeBitEnumAdditio public void testTranslateToVersion_ReturnsBit_WhenVersionOnBitEnumAddition_WhenSpecifyingBit() { assertThat( - CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BIT, TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), + CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BIT, COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), is(CohereEmbeddingType.BIT) ); } public void testTranslateToVersion_ReturnsBit_WhenVersionOnBitEnumAdditionPatch_WhenSpecifyingBit() { assertThat( - CohereEmbeddingType.translateToVersion( - CohereEmbeddingType.BIT, - TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X - ), + CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BIT, COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_PATCH), is(CohereEmbeddingType.BIT) ); } public void testTranslateToVersion_ReturnsFloat_WhenVersionOnBitEnumAddition_WhenSpecifyingFloat() { assertThat( - CohereEmbeddingType.translateToVersion(CohereEmbeddingType.FLOAT, TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), + CohereEmbeddingType.translateToVersion(CohereEmbeddingType.FLOAT, COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), is(CohereEmbeddingType.FLOAT) ); } From fa296fa5a4ac57046a94fd041744cccd3547c5c0 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 14:28:30 -0700 Subject: [PATCH 8/9] use patch version --- .../action/datastreams/GetDataStreamAction.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java b/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java index f9e1a81eb7e02..e811fe8715b9d 100644 --- a/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java +++ b/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java @@ -211,9 +211,9 @@ public enum ManagedBy { public static final ParseField DATA_STREAMS_FIELD = new ParseField("data_streams"); - private static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION = TransportVersion.fromName( + private static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION_PATCH = TransportVersion.fromName( "introduce_failures_default_retention" - ); + ).nextPatchVersion(); private static final TransportVersion INCLUDE_INDEX_MODE_IN_GET_DATA_STREAM = TransportVersion.fromName( "include_index_mode_in_get_data_stream" ); @@ -669,7 +669,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalWriteable(rolloverConfiguration); } // A version 9.x cluster will never read this, so we only need to include the patch version here. - if (out.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION_PATCH)) { out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.defaultRetention()); out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.maxRetention()); out.writeOptionalTimeValue(failuresGlobalRetention == null ? null : failuresGlobalRetention.defaultRetention()); From cfc1a3034bffc0b2c7d79431c85b5f2544aa7242 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Fri, 3 Oct 2025 16:06:18 -0700 Subject: [PATCH 9/9] fix supports --- .../xpack/core/datastreams/DataStreamFeatureSetUsage.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java index e30b3ae12966d..c7604f4a0dc29 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/datastreams/DataStreamFeatureSetUsage.java @@ -137,14 +137,14 @@ public DataStreamStats(StreamInput in) throws IOException { in.getTransportVersion().onOrAfter(TransportVersions.FAILURE_STORE_ENABLED_BY_CLUSTER_SETTING) ? in.readVLong() : 0, in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0) ? in.readVLong() : 0, in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, - in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, - in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, - in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, - in.getTransportVersion().onOrAfter(INTRODUCE_FAILURES_LIFECYCLE) + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readMap(DataStreamLifecycleFeatureSetUsage.GlobalRetentionStats::new) : Map.of() );