diff --git a/server/src/main/java/org/elasticsearch/ElasticsearchException.java b/server/src/main/java/org/elasticsearch/ElasticsearchException.java index 427618cc478f8..b3cacc6828997 100644 --- a/server/src/main/java/org/elasticsearch/ElasticsearchException.java +++ b/server/src/main/java/org/elasticsearch/ElasticsearchException.java @@ -1938,7 +1938,8 @@ private enum ElasticsearchExceptionHandle { 183, TransportVersions.V_8_16_0 ), - REMOTE_EXCEPTION(RemoteException.class, RemoteException::new, 184, TransportVersions.REMOTE_EXCEPTION_8_19); + // requires from id since remote_exception is a dead transport version on main + REMOTE_EXCEPTION(RemoteException.class, RemoteException::new, 184, TransportVersion.fromId(8841016)); final Class exceptionClass; final CheckedFunction constructor; diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index ce2fb0b9deea1..78f55da603b0f 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -178,39 +178,6 @@ static TransportVersion def(int id) { public static final TransportVersion TIMEOUT_GET_PARAM_FOR_RESOLVE_CLUSTER = def(8_838_0_00); public static final TransportVersion INFERENCE_REQUEST_ADAPTIVE_RATE_LIMITING = def(8_839_0_00); public static final TransportVersion ML_INFERENCE_IBM_WATSONX_RERANK_ADDED = def(8_840_0_00); - public static final TransportVersion REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_18 = def(8_840_0_01); - 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); - 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 JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19 = def(8_841_0_06); - 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 = def(8_841_0_10); - public static final TransportVersion ESQL_FAILURE_FROM_REMOTE = def(8_841_0_11); - public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL = 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 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 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 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); - public static final TransportVersion ESQL_DRIVER_TASK_DESCRIPTION_8_19 = def(8_841_0_30); /* * STOP! READ THIS FIRST! No, really, 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 6300efaa11eb9..55c166092f325 100644 --- a/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java +++ b/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java @@ -209,6 +209,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" ); @@ -649,7 +652,7 @@ public static Response read(StreamInput in) throws IOException { : null; DataStreamGlobalRetention dataGlobalRetention = null; DataStreamGlobalRetention failuresGlobalRetention = null; - if (in.getTransportVersion().onOrAfter(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 failuresDefaultRetention = in.readOptionalTimeValue(); @@ -688,7 +691,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 601a30356c113..a41a802f9ec9a 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; @@ -167,7 +172,7 @@ public Response(StreamInput in) throws IOException { super(in); this.indices = in.readCollectionAsList(ExplainIndexDataStreamLifecycle::new); this.rolloverConfiguration = in.readOptionalWriteable(RolloverConfiguration::new); - if (in.getTransportVersion().onOrAfter(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,7 +214,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_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/action/search/SearchQueryThenFetchAsyncAction.java b/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java index 9c7722ec79528..0437db6b9eb7c 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; @@ -79,6 +79,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_BACKPORT_8_X) + if (connection.getTransportVersion().supports(BATCHED_QUERY_PHASE_VERSION) == false || connection.getNode().getVersionInformation().nodeVersion().before(Version.V_8_19_0)) { executeWithoutBatching(routing, request); return; 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 a66f174fc4d8e..58703cbef3ecf 100644 --- a/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java +++ b/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java @@ -9,7 +9,7 @@ package org.elasticsearch.action.support; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; @@ -30,6 +30,8 @@ public enum IndexComponentSelector implements Writeable { DATA("data", (byte) 0), FAILURES("failures", (byte) 1); + private static final TransportVersion REMOVE_ALL_APPLICABLE_SELECTOR = TransportVersion.fromName("remove_all_applicable_selector"); + private final String key; private final byte id; @@ -92,8 +94,7 @@ public static IndexComponentSelector getByKeyOrThrow(@Nullable String key) { public static IndexComponentSelector read(StreamInput in) throws IOException { byte id = in.readByte(); - if (in.getTransportVersion().onOrAfter(TransportVersions.REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_19) - || in.getTransportVersion().isPatchFrom(TransportVersions.REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_18)) { + if (in.getTransportVersion().supports(REMOVE_ALL_APPLICABLE_SELECTOR)) { return getById(id); } else { // Legacy value ::*, converted to ::data 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 d3b3763786b3c..3c187851ea385 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,9 +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_BACKPORT_8_19) - ? in.readOptionalWriteable(DataStreamLifecycle::new) - : null + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readOptionalWriteable(DataStreamLifecycle::new) : null ); } @@ -87,7 +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_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { out.writeOptionalWriteable(lifecycle); } } @@ -167,7 +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_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { ResettableValue.write(out, lifecycle, (o, v) -> v.writeTo(o)); } } @@ -175,7 +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_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 6be586f2d6944..444edb54b65d3 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. @@ -133,6 +135,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 @@ -327,7 +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_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { out.writeOptionalTimeValue(dataRetention); } else { writeLegacyOptionalValue(dataRetention, out, StreamOutput::writeTimeValue); @@ -335,21 +339,21 @@ public void writeTo(StreamOutput out) throws IOException { } if (out.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { out.writeOptionalCollection(downsampling); } else { writeLegacyOptionalValue(downsampling, out, StreamOutput::writeCollection); } out.writeBoolean(enabled()); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycleType.writeTo(out); } } public DataStreamLifecycle(StreamInput in) throws IOException { if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { dataRetention = in.readOptionalTimeValue(); } else { dataRetention = readLegacyOptionalValue(in, StreamInput::readTimeValue); @@ -358,7 +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_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { downsampling = in.readOptionalCollectionAsList(DownsamplingRound::read); } else { downsampling = readLegacyOptionalValue(in, is -> is.readCollectionAsList(DownsamplingRound::read)); @@ -368,9 +372,7 @@ public DataStreamLifecycle(StreamInput in) throws IOException { downsampling = null; enabled = true; } - lifecycleType = in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? LifecycleType.read(in) - : LifecycleType.DATA; + lifecycleType = in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? LifecycleType.read(in) : LifecycleType.DATA; } /** @@ -717,21 +719,21 @@ 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_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_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { ResettableValue.write(out, downsampling, StreamOutput::writeCollection); } else { writeLegacyValue(out, downsampling, StreamOutput::writeCollection); } out.writeBoolean(enabled); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycleType.writeTo(out); } } @@ -777,21 +779,21 @@ 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_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_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)); } enabled = in.readBoolean(); } - var lifecycleTarget = in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) + 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 84fe43195bde4..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,9 +75,7 @@ public boolean isEmpty() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(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. @@ -138,7 +138,7 @@ public Template(DataStreamFailureStore.Template template) { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(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/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java index ac4a3330823f9..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,8 +27,6 @@ import java.util.Map; import java.util.Objects; -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 @@ -41,6 +40,8 @@ public final class InferenceFieldMetadata implements SimpleDiffable pendingHandshakes = new ConcurrentHashMap<>(); private final CounterMetric numHandshakes = new CounterMetric(); @@ -276,7 +276,7 @@ private static TransportVersion ensureCompatibleVersion( if (TransportVersion.isCompatible(remoteTransportVersion)) { // Prevent log message headers from being added to the handshake response. try (var ignored = threadContext.stashContext()) { - if (remoteTransportVersion.before(V8_19_FIRST_VERSION)) { + if (remoteTransportVersion.supports(V8_19_FIRST_VERSION) == false) { deprecationLogger.warn( DeprecationCategory.OTHER, "handshake_version", diff --git a/server/src/main/resources/transport/definitions/referable/amazon_bedrock_task_settings.csv b/server/src/main/resources/transport/definitions/referable/amazon_bedrock_task_settings.csv new file mode 100644 index 0000000000000..f00a3b1e121d4 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/amazon_bedrock_task_settings.csv @@ -0,0 +1 @@ +9049000,8841017 diff --git a/server/src/main/resources/transport/definitions/referable/batched_query_phase_version.csv b/server/src/main/resources/transport/definitions/referable/batched_query_phase_version.csv new file mode 100644 index 0000000000000..7c900b614edf1 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/batched_query_phase_version.csv @@ -0,0 +1 @@ +9043000,8841019 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_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_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_driver_task_description.csv b/server/src/main/resources/transport/definitions/referable/esql_driver_task_description.csv new file mode 100644 index 0000000000000..2d32559c9c56f --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/esql_driver_task_description.csv @@ -0,0 +1 @@ +9005000,9000004,8841030 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/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/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/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_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/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/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/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/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_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/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/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/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/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/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 new file mode 100644 index 0000000000000..e7ae9b5a189fa --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/remove_all_applicable_selector.csv @@ -0,0 +1 @@ +9009000,9000005,8841002,8840001 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/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/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 new file mode 100644 index 0000000000000..d6fab97c9ccfd --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/retry_ilm_async_action_require_error.csv @@ -0,0 +1 @@ +9025000,9000007,8841007,8840002 diff --git a/server/src/main/resources/transport/definitions/referable/search_incremental_top_docs_null.csv b/server/src/main/resources/transport/definitions/referable/search_incremental_top_docs_null.csv new file mode 100644 index 0000000000000..70d2af1e5a47c --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/search_incremental_top_docs_null.csv @@ -0,0 +1 @@ +9058000,8841020 diff --git a/server/src/main/resources/transport/definitions/referable/semantic_text_chunking_config.csv b/server/src/main/resources/transport/definitions/referable/semantic_text_chunking_config.csv new file mode 100644 index 0000000000000..fdb4f7cbaf4ee --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/semantic_text_chunking_config.csv @@ -0,0 +1 @@ +9047000,8841018 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/dead_remote_exception_8_19.csv b/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_8_19.csv new file mode 100644 index 0000000000000..241c4bbc5e2ca --- /dev/null +++ b/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_8_19.csv @@ -0,0 +1 @@ +8841016 diff --git a/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_9_1.csv b/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_9_1.csv new file mode 100644 index 0000000000000..e055ec06fb6ee --- /dev/null +++ b/server/src/main/resources/transport/definitions/unreferable/dead_remote_exception_9_1.csv @@ -0,0 +1 @@ +9044000 diff --git a/server/src/main/resources/transport/definitions/unreferable/dead_search_incremental_top_docs_null.csv b/server/src/main/resources/transport/definitions/unreferable/dead_search_incremental_top_docs_null.csv new file mode 100644 index 0000000000000..fc25db3d6d114 --- /dev/null +++ b/server/src/main/resources/transport/definitions/unreferable/dead_search_incremental_top_docs_null.csv @@ -0,0 +1 @@ +9054000 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/server/src/test/java/org/elasticsearch/TransportVersionTests.java b/server/src/test/java/org/elasticsearch/TransportVersionTests.java index e31732f872256..8ce55cc9be732 100644 --- a/server/src/test/java/org/elasticsearch/TransportVersionTests.java +++ b/server/src/test/java/org/elasticsearch/TransportVersionTests.java @@ -41,7 +41,7 @@ public class TransportVersionTests extends ESTestCase { * If the test fails, there is something wrong with your backport PR. */ public void testMaximumAllowedTransportVersion() { - assertThat(TransportVersion.current().isPatchFrom(TransportVersions.INITIAL_ELASTICSEARCH_8_19), is(true)); + assertThat(TransportVersion.current().isPatchFrom(TransportVersion.fromId(8841000)), is(true)); } public void testVersionComparison() { @@ -467,7 +467,7 @@ public void testTransportVersionsLocked() { "TransportVersions.java is locked. Generate transport versions with TransportVersion.fromName " + "and generateTransportVersion gradle task", versions.get(versions.size() - 1).id(), - equalTo(8_841_0_30) + equalTo(8_840_0_00) ); } } diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTemplateTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTemplateTests.java index 9b7b545586599..048a701008b2d 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTemplateTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTemplateTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.metadata; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.test.AbstractXContentSerializingTestCase; import org.elasticsearch.xcontent.XContentParser; @@ -128,16 +127,15 @@ public void testTemplateComposition() { } public void testBackwardCompatibility() throws IOException { - DataStreamOptions.Template result = copyInstance( - DataStreamOptions.Template.EMPTY, - TransportVersions.SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19 - ); + TransportVersion searchIncrementalTopDocsNull = TransportVersion.fromName("search_incremental_top_docs_null"); + + DataStreamOptions.Template result = copyInstance(DataStreamOptions.Template.EMPTY, searchIncrementalTopDocsNull); assertThat(result, equalTo(DataStreamOptions.Template.EMPTY)); DataStreamOptions.Template withEnabled = new DataStreamOptions.Template( new DataStreamFailureStore.Template(randomBoolean(), DataStreamLifecycleTemplateTests.randomFailuresLifecycleTemplate()) ); - result = copyInstance(withEnabled, TransportVersions.SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19); + result = copyInstance(withEnabled, searchIncrementalTopDocsNull); assertThat(result.failureStore().get().enabled(), equalTo(withEnabled.failureStore().get().enabled())); assertThat(result.failureStore().get().lifecycle(), equalTo(ResettableValue.undefined())); @@ -149,14 +147,14 @@ public void testBackwardCompatibility() throws IOException { : ResettableValue.create(DataStreamLifecycleTemplateTests.randomFailuresLifecycleTemplate()) ) ); - result = copyInstance(withoutEnabled, TransportVersions.SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19); + result = copyInstance(withoutEnabled, searchIncrementalTopDocsNull); assertThat(result, equalTo(DataStreamOptions.Template.EMPTY)); DataStreamOptions.Template withEnabledReset = new DataStreamOptions.Template( new DataStreamFailureStore.Template(ResettableValue.reset(), ResettableValue.undefined()) ); - result = copyInstance(withEnabledReset, TransportVersions.SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19); + result = copyInstance(withEnabledReset, searchIncrementalTopDocsNull); assertThat(result, equalTo(new DataStreamOptions.Template(ResettableValue.reset()))); } } diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTests.java index 95b1a4038bfe3..25d1679e5d459 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/DataStreamOptionsTests.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.metadata; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.test.AbstractXContentSerializingTestCase; import org.elasticsearch.xcontent.XContentParser; @@ -22,8 +21,6 @@ public class DataStreamOptionsTests extends AbstractXContentSerializingTestCase { - private static final TransportVersion SETTINGS_IN_DATA_STREAMS = TransportVersion.fromName("settings_in_data_streams"); - @Override protected Writeable.Reader instanceReader() { return DataStreamOptions::read; @@ -60,20 +57,22 @@ protected DataStreamOptions doParseInstance(XContentParser parser) throws IOExce } public void testBackwardCompatibility() throws IOException { - DataStreamOptions result = copyInstance(DataStreamOptions.EMPTY, TransportVersions.SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19); + TransportVersion searchIncrementalTopDocsNull = TransportVersion.fromName("search_incremental_top_docs_null"); + + DataStreamOptions result = copyInstance(DataStreamOptions.EMPTY, searchIncrementalTopDocsNull); assertThat(result, equalTo(DataStreamOptions.EMPTY)); DataStreamOptions withEnabled = new DataStreamOptions( new DataStreamFailureStore(randomBoolean(), DataStreamLifecycleTests.randomFailuresLifecycle()) ); - result = copyInstance(withEnabled, TransportVersions.SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19); + result = copyInstance(withEnabled, searchIncrementalTopDocsNull); assertThat(result.failureStore().enabled(), equalTo(withEnabled.failureStore().enabled())); assertThat(result.failureStore().lifecycle(), nullValue()); DataStreamOptions withoutEnabled = new DataStreamOptions( new DataStreamFailureStore(null, DataStreamLifecycleTests.randomFailuresLifecycle()) ); - result = copyInstance(withoutEnabled, TransportVersions.SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19); + result = copyInstance(withoutEnabled, searchIncrementalTopDocsNull); assertThat(result, equalTo(DataStreamOptions.EMPTY)); } } 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 a976e37ee2cf1..d83e046436ec0 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java @@ -9,6 +9,7 @@ package org.elasticsearch.cluster.metadata; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.admin.indices.rollover.MaxAgeCondition; import org.elasticsearch.action.admin.indices.rollover.MaxDocsCondition; import org.elasticsearch.action.admin.indices.rollover.MaxPrimaryShardDocsCondition; @@ -66,6 +67,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(); diff --git a/server/src/test/java/org/elasticsearch/transport/TransportHandshakerTests.java b/server/src/test/java/org/elasticsearch/transport/TransportHandshakerTests.java index 8d5acb7c067bb..3cd4ae49efd0d 100644 --- a/server/src/test/java/org/elasticsearch/transport/TransportHandshakerTests.java +++ b/server/src/test/java/org/elasticsearch/transport/TransportHandshakerTests.java @@ -260,7 +260,7 @@ public void testHandshakeResponseFromOlderNodeWithPatchedProtocol() throws Excep } private void assertDeprecationMessageIsLogged(TransportVersion remoteVersion, String remoteReleaseVersion, Object channel) { - if (remoteVersion.onOrAfter(TransportVersion.minimumCompatible()) && remoteVersion.before(V8_19_FIRST_VERSION)) { + if (remoteVersion.onOrAfter(TransportVersion.minimumCompatible()) && remoteVersion.supports(V8_19_FIRST_VERSION) == false) { assertWarnings(getDeprecationMessage(TransportVersion.current(), remoteVersion, remoteReleaseVersion, channel)); } } 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 725d6d018584b..7e79577733520 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,15 +136,15 @@ 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_BACKPORT_8_19) ? in.readVLong() : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) ? in.readVLong() : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, + 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(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readMap(DataStreamLifecycleFeatureSetUsage.GlobalRetentionStats::new) : Map.of() ); @@ -159,7 +161,7 @@ public void writeTo(StreamOutput out) throws IOException { } out.writeVLong(this.failureStoreIndicesCount); } - if (out.getTransportVersion().onOrAfter(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/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 d7a6f46c532d6..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 @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.core.ilm.action; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.IndicesRequest; import org.elasticsearch.action.support.IndicesOptions; @@ -21,6 +21,11 @@ import java.util.Objects; public class RetryActionRequest extends AcknowledgedRequest implements IndicesRequest.Replaceable { + + private static final TransportVersion RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR = TransportVersion.fromName( + "retry_ilm_async_action_require_error" + ); + private String[] indices; private IndicesOptions indicesOptions = IndicesOptions.strictExpandOpen(); private boolean requireError = true; @@ -34,8 +39,7 @@ public RetryActionRequest(StreamInput in) throws IOException { super(in); this.indices = in.readStringArray(); this.indicesOptions = IndicesOptions.readIndicesOptions(in); - if (in.getTransportVersion().onOrAfter(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(); } } @@ -79,8 +83,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeStringArray(indices); indicesOptions.writeIndicesOptions(out); - if (out.getTransportVersion().onOrAfter(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 6947eb7d380f3..a1acbe8c3b8c2 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 @@ -7,6 +7,7 @@ package org.elasticsearch.xpack.core.inference.action; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.action.LegacyActionRequest; import org.elasticsearch.common.io.stream.StreamInput; @@ -23,8 +24,9 @@ */ public abstract class BaseInferenceActionRequest extends LegacyActionRequest { - private boolean hasBeenRerouted; + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); + private boolean hasBeenRerouted; private final InferenceContext context; public BaseInferenceActionRequest(InferenceContext context) { @@ -41,8 +43,7 @@ public BaseInferenceActionRequest(StreamInput in) throws IOException { // a version pre-node-local-rate-limiting as already rerouted to maintain pre-node-local-rate-limiting behavior. this.hasBeenRerouted = true; } - - if (in.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (in.getTransportVersion().supports(INFERENCE_CONTEXT)) { this.context = new InferenceContext(in); } else { this.context = InferenceContext.EMPTY_INSTANCE; @@ -73,8 +74,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_REQUEST_ADAPTIVE_RATE_LIMITING)) { out.writeBoolean(hasBeenRerouted); } - - if (out.getTransportVersion().onOrAfter(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/InferenceAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java index 96de7ee9f119b..748fc7ea3425f 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; @@ -173,7 +175,6 @@ public Request(StreamInput in) throws IOException { } else { this.inputType = InputType.UNSPECIFIED; } - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { this.query = in.readOptionalString(); this.inferenceTimeout = in.readTimeValue(); @@ -181,8 +182,7 @@ public Request(StreamInput in) throws IOException { this.query = null; this.inferenceTimeout = DEFAULT_TIMEOUT; } - - if (in.getTransportVersion().onOrAfter(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19)) { + if (in.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { this.returnDocuments = in.readOptionalBoolean(); this.topN = in.readOptionalInt(); } else { @@ -294,17 +294,14 @@ public void writeTo(StreamOutput out) throws IOException { out.writeString(input.get(0)); } out.writeGenericMap(taskSettings); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { out.writeEnum(getInputTypeToWrite(inputType, out.getTransportVersion())); } - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { out.writeOptionalString(query); out.writeTimeValue(inferenceTimeout); } - - if (out.getTransportVersion().onOrAfter(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/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 4746cf9d798cb..ee15c37ff6654 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,7 +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_8_X)) { + if (in.getTransportVersion().supports(INFERENCE_CONTEXT)) { this.context = new InferenceContext(in); } else { this.context = InferenceContext.EMPTY_INSTANCE; @@ -126,7 +128,7 @@ public void writeTo(StreamOutput out) throws IOException { XContentHelper.writeTo(out, contentType); out.writeTimeValue(timeout); - if (out.getTransportVersion().onOrAfter(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/PutInferenceModelAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java index 5fea258446087..921e16dce3843 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 { + 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 protected Writeable.Reader instanceReader() { return InferenceAction.Request::new; @@ -657,7 +660,7 @@ protected InferenceAction.Request mutateInstanceForVersion(InferenceAction.Reque InferenceAction.Request.DEFAULT_TIMEOUT, false ); - } else if (version.before(TransportVersions.INFERENCE_CONTEXT_8_X)) { + } else if (version.supports(INFERENCE_CONTEXT) == false) { mutated = new InferenceAction.Request( instance.getTaskType(), instance.getInferenceEntityId(), @@ -671,7 +674,7 @@ protected InferenceAction.Request mutateInstanceForVersion(InferenceAction.Reque false, InferenceContext.EMPTY_INSTANCE ); - } else if (version.before(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19)) { + } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { mutated = new InferenceAction.Request( instance.getTaskType(), instance.getInferenceEntityId(), 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 c76e187f2fbb1..f32bcc5d92804 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", @@ -107,7 +109,7 @@ public void testWriteTo_WhenVersionIsBeforeInferenceContext_ShouldSetContextToEm @Override protected UnifiedCompletionAction.Request mutateInstanceForVersion(UnifiedCompletionAction.Request instance, TransportVersion version) { - if (version.before(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (version.supports(INFERENCE_CONTEXT) == false) { return new UnifiedCompletionAction.Request( instance.getInferenceEntityId(), instance.getTaskType(), 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 a0935aa2b453a..d830d2c1a66c4 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; @@ -27,6 +27,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 @@ -45,7 +47,7 @@ public UnsupportedEsField(StreamInput in) throws IOException { } private static List readOriginalTypes(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(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(readCachedStringWithVersionCheck(in).split(",")); @@ -55,7 +57,7 @@ private static List readOriginalTypes(StreamInput in) throws IOException @Override public void writeContent(StreamOutput out) throws IOException { writeCachedStringWithVersionCheck(out, getName()); - if (out.getTransportVersion().onOrAfter(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 { writeCachedStringWithVersionCheck(out, String.join(",", getOriginalTypes())); 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 c97f155e76d33..60f9a95d69302 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; @@ -173,6 +172,11 @@ public String getLabel() { } 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; @@ -204,7 +208,7 @@ public void writeTo(StreamOutput out) throws IOException { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL; + return ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL; } } 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 33bebcad9192e..68c249608ce1f 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 @@ -9,7 +9,7 @@ import org.apache.lucene.util.Accountable; import org.apache.lucene.util.RamUsageEstimator; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.unit.ByteSizeValue; @@ -40,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? @@ -344,7 +347,7 @@ static Block[] buildAll(Block.Builder... builders) { * This should be paired with {@link #readTypedBlock(BlockStreamInput)} */ static void writeTypedBlock(Block block, StreamOutput out) throws IOException { - if (out.getTransportVersion().before(TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK_8_19) + if (supportsAggregateMetricDoubleBlock(out.getTransportVersion()) == false && block instanceof AggregateMetricDoubleArrayBlock aggregateMetricDoubleBlock) { block = aggregateMetricDoubleBlock.asCompositeBlock(); } @@ -359,13 +362,16 @@ static void writeTypedBlock(Block block, StreamOutput out) throws IOException { static Block readTypedBlock(BlockStreamInput in) throws IOException { ElementType elementType = ElementType.readFrom(in); Block block = elementType.reader.readBlock(in); - if (in.getTransportVersion().before(TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK_8_19) - && block instanceof CompositeBlock compositeBlock) { + if (supportsAggregateMetricDoubleBlock(in.getTransportVersion()) == false && block instanceof CompositeBlock compositeBlock) { block = AggregateMetricDoubleArrayBlock.fromCompositeBlock(compositeBlock); } return block; } + static boolean supportsAggregateMetricDoubleBlock(TransportVersion version) { + return version.supports(ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK); + } + /** * Serialization type for blocks: 0 and 1 replace false/true used in pre-8.14 */ 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 214a8e256b952..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,7 +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)) { + if (in.getTransportVersion().supports(ESQL_SERIALIZE_BLOCK_TYPE_CODE)) { byte b = in.readByte(); return values()[b]; } else { @@ -151,7 +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)) { + if (out.getTransportVersion().supports(ESQL_SERIALIZE_BLOCK_TYPE_CODE)) { out.writeByte(writableCode); } else { out.writeString(legacyWritableName); diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java index 661fda846e724..7f4dcc64e344e 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java @@ -43,8 +43,6 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static org.elasticsearch.TransportVersions.ESQL_REPORT_SHARD_PARTITIONING_8_19; - public abstract class LuceneOperator extends SourceOperator { private static final Logger logger = LogManager.getLogger(LuceneOperator.class); @@ -273,6 +271,8 @@ public static class Status implements Operator.Status { Status::new ); + private static final TransportVersion ESQL_REPORT_SHARD_PARTITIONING = TransportVersion.fromName("esql_report_shard_partitioning"); + private final int processedSlices; private final Set processedQueries; private final Set processedShards; @@ -362,7 +362,7 @@ private Status(LuceneOperator operator) { } else { rowsEmitted = 0; } - partitioningStrategies = in.getTransportVersion().onOrAfter(ESQL_REPORT_SHARD_PARTITIONING_8_19) + partitioningStrategies = in.getTransportVersion().onOrAfter(ESQL_REPORT_SHARD_PARTITIONING) ? in.readMap(LuceneSliceQueue.PartitioningStrategy::readFrom) : Map.of(); } @@ -386,7 +386,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_ROWS_PROCESSED)) { out.writeVLong(rowsEmitted); } - if (out.getTransportVersion().onOrAfter(ESQL_REPORT_SHARD_PARTITIONING_8_19)) { + if (out.getTransportVersion().onOrAfter(ESQL_REPORT_SHARD_PARTITIONING)) { out.writeMap(partitioningStrategies, StreamOutput::writeString, StreamOutput::writeWriteable); } } 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 9fb4c1ad74f14..3bbc1bc1a1af6 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 @@ -7,6 +7,7 @@ package org.elasticsearch.compute.operator; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.StreamInput; @@ -26,6 +27,9 @@ * Profile results from a single {@link Driver}. */ public class DriverProfile implements Writeable, ChunkedToXContentObject { + + private static final TransportVersion ESQL_DRIVER_TASK_DESCRIPTION = TransportVersion.fromName("esql_driver_task_description"); + /** * Description of the task this driver is running. This description should be * short and meaningful as a grouping identifier. We use the phase of the @@ -88,9 +92,7 @@ public DriverProfile( } public DriverProfile(StreamInput in) throws IOException { - this.taskDescription = in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19) - ? in.readString() - : ""; + this.taskDescription = in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) ? in.readString() : ""; if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { this.startMillis = in.readVLong(); this.stopMillis = in.readVLong(); @@ -113,7 +115,7 @@ public DriverProfile(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19)) { + if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION)) { out.writeString(taskDescription); } if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { 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 91ab480b843e0..a96fff715536c 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 @@ -7,6 +7,7 @@ package org.elasticsearch.compute.operator; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; @@ -34,6 +35,8 @@ public class DriverStatus implements Task.Status { DriverStatus::new ); + private static final TransportVersion ESQL_DRIVER_TASK_DESCRIPTION = TransportVersion.fromName("esql_driver_task_description"); + /** * The session for this driver. */ @@ -109,9 +112,7 @@ public class DriverStatus implements Task.Status { public DriverStatus(StreamInput in) throws IOException { this.sessionId = in.readString(); - this.taskDescription = in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19) - ? in.readString() - : ""; + this.taskDescription = in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) ? in.readString() : ""; this.started = in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0) ? in.readLong() : 0; this.lastUpdated = in.readLong(); this.cpuNanos = in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0) ? in.readVLong() : 0; @@ -129,7 +130,7 @@ public DriverStatus(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(sessionId); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19)) { + if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION)) { out.writeString(taskDescription); } if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { 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 3a03acf983c32..33a3ebd296aad 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))); } @@ -389,11 +392,7 @@ public void testCompositeBlock() throws Exception { try ( CompositeBlock deserBlock = serializeDeserializeBlockWithVersion( origBlock, - TransportVersionUtils.randomVersionBetween( - random(), - TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK_8_19, - 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 56be3ac21f38d..2f244b391cd2e 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; @@ -42,6 +42,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) { @@ -86,7 +88,7 @@ public ColumnInfoImpl(String name, DataType type, @Nullable List origina 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_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { this.originalTypes = in.readOptionalStringCollectionAsList(); } else { this.originalTypes = null; @@ -97,7 +99,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_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { out.writeOptionalStringCollection(originalTypes); } } 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 fc175672a845d..67bd040583552 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 @@ -25,6 +25,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" ); @@ -87,7 +88,7 @@ final class ComputeResponse extends TransportResponse { this.skippedShards = 0; this.failedShards = 0; } - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_FAILURE_FROM_REMOTE)) { + if (in.getTransportVersion().supports(ESQL_FAILURE_FROM_REMOTE)) { this.failures = in.readCollectionAsImmutableList(ShardSearchFailure::readShardSearchFailure); } else { this.failures = List.of(); @@ -109,7 +110,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVInt(skippedShards); out.writeVInt(failedShards); } - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_FAILURE_FROM_REMOTE)) { + if (out.getTransportVersion().supports(ESQL_FAILURE_FROM_REMOTE)) { out.writeCollection(failures, (o, v) -> v.writeTo(o)); } } 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 d0811c75e6c95..23e265278daef 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; @@ -65,6 +64,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 ClusterService clusterService; private final SearchService searchService; @@ -502,6 +506,6 @@ public void messageReceived(DataNodeRequest request, TransportChannel channel, T } static boolean supportShardLevelRetryFailure(TransportVersion transportVersion) { - return transportVersion.onOrAfter(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 b6fb78ff54f65..82712aceb039f 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 @@ -7,6 +7,7 @@ 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; @@ -35,6 +36,8 @@ public class Configuration implements Writeable { public static final int QUERY_COMPRESS_THRESHOLD_CHARS = KB.toIntBytes(5); + 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; @@ -110,7 +113,7 @@ public Configuration(BlockStreamInput in) throws IOException { } else { this.queryStartTimeNanos = -1; } - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_SUPPORT_PARTIAL_RESULTS)) { this.allowPartialResults = in.readBoolean(); } else { this.allowPartialResults = false; @@ -139,7 +142,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { out.writeLong(queryStartTimeNanos); } - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_SUPPORT_PARTIAL_RESULTS)) { out.writeBoolean(allowPartialResults); } } 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 02f5ff161265a..43e811fa4db5f 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; @@ -87,6 +86,10 @@ public static ModelRegistryMetadata fromState(Metadata metadata) { 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)) { @@ -176,7 +179,7 @@ public Iterator toXContentChunked(ToXContent.Params params } /** - * Determines whether all models created prior to {@link TransportVersions#INFERENCE_MODEL_REGISTRY_METADATA_8_19} + * 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. @@ -226,7 +229,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA_8_19; + return INFERENCE_MODEL_REGISTRY_METADATA; } @Override @@ -292,7 +295,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA_8_19; + return INFERENCE_MODEL_REGISTRY_METADATA; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsTaskSettings.java index e08d89bc40277..1d08c6ea812f6 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.amazonbedrock.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; @@ -28,6 +27,7 @@ public record AmazonBedrockEmbeddingsTaskSettings(@Nullable CohereTruncation cohereTruncation) implements TaskSettings { public static final AmazonBedrockEmbeddingsTaskSettings EMPTY = new AmazonBedrockEmbeddingsTaskSettings((CohereTruncation) null); public static final String NAME = "amazon_bedrock_embeddings_task_settings"; + private static final TransportVersion AMAZON_BEDROCK_TASK_SETTINGS = TransportVersion.fromName("amazon_bedrock_task_settings"); public static AmazonBedrockEmbeddingsTaskSettings fromMap(Map map) { if (map == null || map.isEmpty()) { @@ -79,7 +79,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.AMAZON_BEDROCK_TASK_SETTINGS_8_19; + return AMAZON_BEDROCK_TASK_SETTINGS; } @Override 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 2fc70431076a6..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,7 +132,7 @@ public static CohereEmbeddingType translateToVersion(CohereEmbeddingType embeddi } if (embeddingType == BIT) { - if (version.onOrAfter(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/deepseek/DeepSeekChatCompletionModel.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java index bea86596eaa3a..2a3a6b341dcf2 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); @@ -176,7 +176,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_DEEPSEEK_8_19; + return 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 5e137e7f032fa..faf84693bf355 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.common.ValidationException; import org.elasticsearch.common.util.LazyInitializable; @@ -57,6 +56,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, ServiceComponents serviceComponents) { super(factory, serviceComponents); @@ -167,7 +167,7 @@ public EnumSet supportedTaskTypes() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_DEEPSEEK_8_19; + 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 66b534fb132a7..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,7 +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_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 bc94143be7e2e..4efc6315b3dee 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; @@ -94,8 +98,7 @@ public JinaAIEmbeddingsServiceSettings(StreamInput in) throws IOException { this.similarity = in.readOptionalEnum(SimilarityMeasure.class); this.dimensions = in.readOptionalVInt(); this.maxInputTokens = in.readOptionalVInt(); - - this.embeddingType = (in.getTransportVersion().onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) + this.embeddingType = (in.getTransportVersion().supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) ? Objects.requireNonNullElse(in.readOptionalEnum(JinaAIEmbeddingType.class), JinaAIEmbeddingType.FLOAT) : JinaAIEmbeddingType.FLOAT; } @@ -179,8 +182,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); out.writeOptionalVInt(dimensions); out.writeOptionalVInt(maxInputTokens); - - if (out.getTransportVersion().onOrAfter(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/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 f1962dc107c1a..800c88649cc97 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.common.CheckedSupplier; @@ -50,6 +49,8 @@ public class SageMakerService implements InferenceService { 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; @@ -303,7 +304,7 @@ public Model updateModelWithEmbeddingDetails(Model model, int embeddingSize) { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER_8_19; + 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 b08943707e086..b8d6b0dc59e53 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); @@ -111,7 +111,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER_8_19; + return 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 829a92edfe622..cac87191193e2 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( @@ -111,7 +111,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER_8_19; + return 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 96c1e10391347..9f6f3098ea562 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() { @@ -29,7 +29,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER_8_19; + return 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 e19a4c0550a7e..b97354118c023 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; @@ -39,7 +41,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER_8_19; + return 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 757a26bf1d884..785ae74dc24bb 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()); @@ -138,7 +138,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER_8_19; + return ML_INFERENCE_SAGEMAKER; } @Override 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 f4ed01b9f53bf..6b45afe75c990 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 @@ -9,7 +9,6 @@ import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.util.LazyInitializable; @@ -97,6 +96,8 @@ public class VoyageAIService extends SenderService { InputType.INTERNAL_SEARCH ); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public VoyageAIService(HttpRequestSender.Factory factory, ServiceComponents serviceComponents) { super(factory, serviceComponents); } @@ -357,7 +358,7 @@ static SimilarityMeasure defaultSimilarity() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X; + return VOYAGE_AI_INTEGRATION_ADDED; } public static class Configuration { 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 e59a339a50553..4a8a47c3b7c6b 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(); @@ -108,7 +108,7 @@ public XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder builder @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X; + return 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 fd9c38dbcbfe4..29b63a91bbe06 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); @@ -226,7 +227,7 @@ protected XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder buil @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X; + return 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 7373f615237d3..68f8e3c2975fb 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()) { @@ -162,7 +162,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X; + return 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 2aa9d0ff5ecf3..feb2310c537f8 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(); @@ -90,7 +91,7 @@ protected XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder buil @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X; + return 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 efedd3594edab..77a313278a4d2 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(); @@ -135,7 +136,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override 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 c07bc30944568..f4edfd9011051 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 @@ -17,6 +17,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,7 +45,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_8_19)) { + if (version.supports(INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT)) { return instance; } else if (version.onOrAfter(TransportVersions.V_8_0_0)) { return new PutInferenceModelAction.Request( 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 bc6207863ff9c..7d51d589644d6 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,11 @@ 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" + ); + public void testTranslateToVersion_ReturnsInt8_WhenVersionIsBeforeByteEnumAddition_WhenSpecifyingByte() { assertThat( CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BYTE, new TransportVersion(8_613_00_0)), @@ -57,22 +62,16 @@ public void testTranslateToVersion_ReturnsInt8_WhenVersionIsBeforeBitEnumAdditio ); } - public void testTranslateToVersion_ReturnsBit_WhenVersionOnBitEnumAddition_WhenSpecifyingBit() { + 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), is(CohereEmbeddingType.BIT) ); } public void testTranslateToVersion_ReturnsFloat_WhenVersionOnBitEnumAddition_WhenSpecifyingFloat() { assertThat( - CohereEmbeddingType.translateToVersion( - CohereEmbeddingType.FLOAT, - TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X - ), + CohereEmbeddingType.translateToVersion(CohereEmbeddingType.FLOAT, COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), is(CohereEmbeddingType.FLOAT) ); } 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 c8d0cfe241103..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,7 +225,7 @@ protected JinaAIEmbeddingsServiceSettings mutateInstance(JinaAIEmbeddingsService @Override protected JinaAIEmbeddingsServiceSettings mutateInstanceForVersion(JinaAIEmbeddingsServiceSettings instance, TransportVersion version) { - if (version.onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) { + if (version.supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) { return instance; } 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 59af0c01d8262..69cf6c934951b 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; @@ -76,6 +76,6 @@ protected int doHashCode() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.PINNED_RETRIEVER_8_19; + return PINNED_RETRIEVER; } }