diff --git a/server/src/main/java/org/elasticsearch/ElasticsearchException.java b/server/src/main/java/org/elasticsearch/ElasticsearchException.java index a46eac0c31a74..27db9c2764444 100644 --- a/server/src/main/java/org/elasticsearch/ElasticsearchException.java +++ b/server/src/main/java/org/elasticsearch/ElasticsearchException.java @@ -2018,13 +2018,7 @@ private enum ElasticsearchExceptionHandle { 183, TransportVersions.V_8_16_0 ), - REMOTE_EXCEPTION( - RemoteException.class, - RemoteException::new, - 184, - TransportVersions.REMOTE_EXCEPTION, - TransportVersions.REMOTE_EXCEPTION_8_19 - ), + REMOTE_EXCEPTION(RemoteException.class, RemoteException::new, 184, TransportVersion.minimumCompatible()), NO_MATCHING_PROJECT_EXCEPTION( NoMatchingProjectException.class, NoMatchingProjectException::new, diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 57acb52341ff8..90b2870c08378 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -140,100 +140,34 @@ static TransportVersion def(int id) { public static final TransportVersion TIMEOUT_GET_PARAM_FOR_RESOLVE_CLUSTER = def(8_838_0_00); public static final TransportVersion INFERENCE_REQUEST_ADAPTIVE_RATE_LIMITING = def(8_839_0_00); public static final TransportVersion ML_INFERENCE_IBM_WATSONX_RERANK_ADDED = def(8_840_0_00); - // TODO: add to remove_all_applicable_selector.csv - public static final TransportVersion REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_18 = def(8_840_0_01); - // TODO: add to retry_ilm_async_action_require_error.csv - public static final TransportVersion RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_18 = def(8_840_0_02); - public static final TransportVersion INITIAL_ELASTICSEARCH_8_19 = def(8_841_0_00); - public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X = def(8_841_0_01); - // TODO: add to remove_all_applicable_selector.csv - 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); - // TODO: add to retry_ilm_async_action_require_error.csv - public static final TransportVersion RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_19 = def(8_841_0_07); - public static final TransportVersion INFERENCE_CONTEXT_8_X = def(8_841_0_08); - public static final TransportVersion ML_INFERENCE_DEEPSEEK_8_19 = def(8_841_0_09); - public static final TransportVersion ESQL_SERIALIZE_BLOCK_TYPE_CODE_8_19 = def(8_841_0_10); - public static final TransportVersion ESQL_FAILURE_FROM_REMOTE_8_19 = def(8_841_0_11); - public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL_8_19 = def(8_841_0_12); - public static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA_8_19 = def(8_841_0_13); - public static final TransportVersion INTRODUCE_LIFECYCLE_TEMPLATE_8_19 = def(8_841_0_14); - public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED_8_19 = def(8_841_0_15); - public static final TransportVersion 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); - // TODO: add to esql_driver_task_description.csv - public static final TransportVersion ESQL_DRIVER_TASK_DESCRIPTION_8_19 = def(8_841_0_30); - public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00); - public static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = def(9_006_0_00); public static final TransportVersion ESQL_PROFILE_ASYNC_NANOS = def(9_007_00_0); public static final TransportVersion ESQL_LOOKUP_JOIN_SOURCE_TEXT = def(9_008_0_00); public static final TransportVersion SLM_UNHEALTHY_IF_NO_SNAPSHOT_WITHIN = def(9_010_0_00); - public static final TransportVersion ESQL_SUPPORT_PARTIAL_RESULTS = def(9_011_0_00); public static final TransportVersion REMOVE_REPOSITORY_CONFLICT_MESSAGE = def(9_012_0_00); - public static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = def(9_014_0_00); public static final TransportVersion ESQL_SERIALIZE_SOURCE_FUNCTIONS_WARNINGS = def(9_016_0_00); public static final TransportVersion ESQL_DRIVER_NODE_DESCRIPTION = def(9_017_0_00); public static final TransportVersion MULTI_PROJECT = def(9_018_0_00); - public static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_020_0_00); public static final TransportVersion UNASSIGENEDINFO_RESHARD_ADDED = def(9_022_0_00); public static final TransportVersion MAX_OPERATION_SIZE_REJECTIONS_ADDED = def(9_024_0_00); - public static final TransportVersion ESQL_SERIALIZE_BLOCK_TYPE_CODE = def(9_026_0_00); public static final TransportVersion ESQL_THREAD_NAME_IN_DRIVER_PROFILE = def(9_027_0_00); - public static final TransportVersion INFERENCE_CONTEXT = def(9_028_0_00); - public static final TransportVersion ML_INFERENCE_DEEPSEEK = def(9_029_00_0); - public static final TransportVersion ESQL_FAILURE_FROM_REMOTE = def(9_030_00_0); public static final TransportVersion INDEX_RESHARDING_METADATA = def(9_031_0_00); - public static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA = def(9_032_0_00); - public static final TransportVersion INTRODUCE_LIFECYCLE_TEMPLATE = def(9_033_0_00); public static final TransportVersion INDEXING_STATS_INCLUDES_RECENT_WRITE_LOAD = def(9_034_0_00); - public static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL = def(9_035_0_00); public static final TransportVersion INDEX_METADATA_INCLUDES_RECENT_WRITE_LOAD = def(9_036_0_00); - public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = def(9_037_0_00); - public static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES = def(9_038_00_0); - public static final TransportVersion RESCORE_VECTOR_ALLOW_ZERO = def(9_039_0_00); public static final TransportVersion PROJECT_ID_IN_SNAPSHOT = def(9_040_0_00); public static final TransportVersion INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD = def(9_041_0_00); - public static final TransportVersion BATCHED_QUERY_PHASE_VERSION = def(9_043_0_00); - public static final TransportVersion REMOTE_EXCEPTION = def(9_044_0_00); public static final TransportVersion ESQL_REMOVE_AGGREGATE_TYPE = def(9_045_0_00); public static final TransportVersion ADD_PROJECT_ID_TO_DSL_ERROR_INFO = def(9_046_0_00); - public static final TransportVersion SEMANTIC_TEXT_CHUNKING_CONFIG = def(9_047_0_00); public static final TransportVersion REPO_ANALYSIS_COPY_BLOB = def(9_048_0_00); - public static final TransportVersion AMAZON_BEDROCK_TASK_SETTINGS = def(9_049_0_00); - public static final TransportVersion ESQL_REPORT_SHARD_PARTITIONING = def(9_050_0_00); public static final TransportVersion DEAD_ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = def(9_052_0_00); public static final TransportVersion DEAD_BATCHED_QUERY_EXECUTION_DELAYABLE_WRITABLE = def(9_053_0_00); - public static final TransportVersion DEAD_SEARCH_INCREMENTAL_TOP_DOCS_NULL = def(9_054_0_00); public static final TransportVersion BATCHED_QUERY_EXECUTION_DELAYABLE_WRITABLE = def(9_057_0_00); - public static final TransportVersion SEARCH_INCREMENTAL_TOP_DOCS_NULL = def(9_058_0_00); public static final TransportVersion COMPRESS_DELAYABLE_WRITEABLE = def(9_059_0_00); public static final TransportVersion SYNONYMS_REFRESH_PARAM = def(9_060_0_00); public static final TransportVersion DOC_FIELDS_AS_LIST = def(9_061_0_00); public static final TransportVersion DENSE_VECTOR_OFF_HEAP_STATS = def(9_062_00_0); - public static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = def(9_065_0_00); public static final TransportVersion PROJECT_METADATA_SETTINGS = def(9_066_0_00); - public static final TransportVersion AGGREGATE_METRIC_DOUBLE_BLOCK = def(9_067_0_00); - public static final TransportVersion PINNED_RETRIEVER = def(9_068_0_00); - public static final TransportVersion ML_INFERENCE_SAGEMAKER = def(9_069_0_00); public static final TransportVersion WRITE_LOAD_INCLUDES_BUFFER_WRITES = def(9_070_0_00); - public static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION = def(9_071_0_00); public static final TransportVersion FILE_SETTINGS_HEALTH_INFO = def(9_072_0_00); - public static final TransportVersion INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT = def(9_074_0_00); public static final TransportVersion ESQL_FIELD_ATTRIBUTE_DROP_TYPE = def(9_075_0_00); public static final TransportVersion ESQL_TIME_SERIES_SOURCE_STATUS = def(9_076_0_00); public static final TransportVersion NODES_STATS_SUPPORTS_MULTI_PROJECT = def(9_079_0_00); diff --git a/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java b/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java index d556574391f3c..e811fe8715b9d 100644 --- a/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java +++ b/server/src/main/java/org/elasticsearch/action/datastreams/GetDataStreamAction.java @@ -211,6 +211,9 @@ public enum ManagedBy { public static final ParseField DATA_STREAMS_FIELD = new ParseField("data_streams"); + private static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION_PATCH = TransportVersion.fromName( + "introduce_failures_default_retention" + ).nextPatchVersion(); private static final TransportVersion INCLUDE_INDEX_MODE_IN_GET_DATA_STREAM = TransportVersion.fromName( "include_index_mode_in_get_data_stream" ); @@ -666,7 +669,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalWriteable(rolloverConfiguration); } // A version 9.x cluster will never read this, so we only need to include the patch version here. - if (out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION_PATCH)) { out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.defaultRetention()); out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.maxRetention()); out.writeOptionalTimeValue(failuresGlobalRetention == null ? null : failuresGlobalRetention.defaultRetention()); diff --git a/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java b/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java index 3d5338045a6db..09246a466aef7 100644 --- a/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java +++ b/server/src/main/java/org/elasticsearch/action/datastreams/lifecycle/ExplainDataStreamLifecycleAction.java @@ -9,6 +9,7 @@ package org.elasticsearch.action.datastreams.lifecycle; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; @@ -143,6 +144,10 @@ public Request indicesOptions(IndicesOptions indicesOptions) { */ public static class Response extends ActionResponse implements ChunkedToXContentObject { public static final ParseField INDICES_FIELD = new ParseField("indices"); + private static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION = TransportVersion.fromName( + "" + "introduce_failures_default_retention" + ); + private final List indices; @Nullable private final RolloverConfiguration rolloverConfiguration; @@ -166,8 +171,7 @@ public Response( public Response(StreamInput in) throws IOException { this.indices = in.readCollectionAsList(ExplainIndexDataStreamLifecycle::new); this.rolloverConfiguration = in.readOptionalWriteable(RolloverConfiguration::new); - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION)) { var defaultRetention = in.readOptionalTimeValue(); var maxRetention = in.readOptionalTimeValue(); var defaultFailuresRetention = in.readOptionalTimeValue(); @@ -209,8 +213,7 @@ private DataStreamGlobalRetention getGlobalRetentionForLifecycle(DataStreamLifec public void writeTo(StreamOutput out) throws IOException { out.writeCollection(indices); out.writeOptionalWriteable(rolloverConfiguration); - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_DEFAULT_RETENTION)) { out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.defaultRetention()); out.writeOptionalTimeValue(dataGlobalRetention == null ? null : dataGlobalRetention.maxRetention()); out.writeOptionalTimeValue(failureGlobalRetention == null ? null : failureGlobalRetention.defaultRetention()); diff --git a/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java b/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java index a8f22eb1cc572..573c6a728c136 100644 --- a/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java +++ b/server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java @@ -14,7 +14,7 @@ import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopFieldDocs; import org.elasticsearch.ExceptionsHelper; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.IndicesRequest; @@ -82,6 +82,8 @@ public class SearchQueryThenFetchAsyncAction extends AbstractSearchAsyncAction shardIndexMap) { return; } // must check both node and transport versions to correctly deal with BwC on proxy connections - if (connection.getTransportVersion().before(TransportVersions.BATCHED_QUERY_PHASE_VERSION) + if (connection.getTransportVersion().supports(BATCHED_QUERY_PHASE_VERSION) == false || connection.getNode().getVersionInformation().nodeVersion().before(Version.V_9_1_0)) { executeWithoutBatching(routing, request); return; diff --git a/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java b/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java index 5bf9dcbf2e982..58703cbef3ecf 100644 --- a/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java +++ b/server/src/main/java/org/elasticsearch/action/support/IndexComponentSelector.java @@ -10,7 +10,6 @@ package org.elasticsearch.action.support; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; @@ -95,9 +94,7 @@ public static IndexComponentSelector getByKeyOrThrow(@Nullable String key) { public static IndexComponentSelector read(StreamInput in) throws IOException { byte id = in.readByte(); - if (in.getTransportVersion().supports(REMOVE_ALL_APPLICABLE_SELECTOR) - || in.getTransportVersion().isPatchFrom(TransportVersions.REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_18) - || in.getTransportVersion().isPatchFrom(TransportVersions.REMOVE_ALL_APPLICABLE_SELECTOR_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(REMOVE_ALL_APPLICABLE_SELECTOR)) { return getById(id); } else { // Legacy value ::*, converted to ::data diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java index 5c8849e1282d8..e401ca62984f3 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamFailureStore.java @@ -9,7 +9,7 @@ package org.elasticsearch.cluster.metadata; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.SimpleDiffable; import org.elasticsearch.common.Strings; @@ -59,6 +59,8 @@ public record DataStreamFailureStore(@Nullable Boolean enabled, @Nullable DataSt ); } + private static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = TransportVersion.fromName("introduce_failures_lifecycle"); + /** * @param enabled, true when the failure is enabled, false when it's disabled, null when it depends on other configuration. Currently, * null value is not supported because there are no other arguments @@ -74,10 +76,7 @@ public record DataStreamFailureStore(@Nullable Boolean enabled, @Nullable DataSt public DataStreamFailureStore(StreamInput in) throws IOException { this( in.readOptionalBoolean(), - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readOptionalWriteable(DataStreamLifecycle::new) - : null + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readOptionalWriteable(DataStreamLifecycle::new) : null ); } @@ -88,8 +87,7 @@ public static Diff readDiffFrom(StreamInput in) throws I @Override public void writeTo(StreamOutput out) throws IOException { out.writeOptionalBoolean(enabled); - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { out.writeOptionalWriteable(lifecycle); } } @@ -169,8 +167,7 @@ public Template(@Nullable Boolean enabled, @Nullable DataStreamLifecycle.Templat @Override public void writeTo(StreamOutput out) throws IOException { ResettableValue.write(out, enabled, StreamOutput::writeBoolean); - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { ResettableValue.write(out, lifecycle, (o, v) -> v.writeTo(o)); } } @@ -178,8 +175,7 @@ public void writeTo(StreamOutput out) throws IOException { public static Template read(StreamInput in) throws IOException { ResettableValue enabled = ResettableValue.read(in, StreamInput::readBoolean); ResettableValue lifecycle = ResettableValue.undefined(); - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycle = ResettableValue.read(in, DataStreamLifecycle.Template::read); } return new Template(enabled, lifecycle); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java index 174cdc88c278d..7e60ddf0818d1 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamLifecycle.java @@ -73,6 +73,8 @@ public class DataStreamLifecycle implements SimpleDiffable, private static final String DOWNSAMPLING_NOT_SUPPORTED_ERROR_MESSAGE = "Failure store lifecycle does not support downsampling, please remove the downsampling configuration."; + private static final TransportVersion INTRODUCE_LIFECYCLE_TEMPLATE = TransportVersion.fromName("introduce_lifecycle_template"); + /** * Check if {@link #DATA_STREAMS_LIFECYCLE_ONLY_SETTING_NAME} is present and set to {@code true}, indicating that * we're running in a cluster configuration that is only expecting to use data streams lifecycles. @@ -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,8 +331,7 @@ public int hashCode() { @Override public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { out.writeOptionalTimeValue(dataRetention); } else { writeLegacyOptionalValue(dataRetention, out, StreamOutput::writeTimeValue); @@ -336,24 +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) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { out.writeOptionalCollection(downsampling); } else { writeLegacyOptionalValue(downsampling, out, StreamOutput::writeCollection); } out.writeBoolean(enabled()); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycleType.writeTo(out); } } public DataStreamLifecycle(StreamInput in) throws IOException { if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { dataRetention = in.readOptionalTimeValue(); } else { dataRetention = readLegacyOptionalValue(in, StreamInput::readTimeValue); @@ -362,8 +362,7 @@ public DataStreamLifecycle(StreamInput in) throws IOException { dataRetention = null; } if (in.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { downsampling = in.readOptionalCollectionAsList(DownsamplingRound::read); } else { downsampling = readLegacyOptionalValue(in, is -> is.readCollectionAsList(DownsamplingRound::read)); @@ -373,10 +372,7 @@ public DataStreamLifecycle(StreamInput in) throws IOException { downsampling = null; enabled = true; } - lifecycleType = in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? LifecycleType.read(in) - : LifecycleType.DATA; + lifecycleType = in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? LifecycleType.read(in) : LifecycleType.DATA; } /** @@ -723,24 +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) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { ResettableValue.write(out, dataRetention, StreamOutput::writeTimeValue); } else { writeLegacyValue(out, dataRetention, StreamOutput::writeTimeValue); } } if (out.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { ResettableValue.write(out, downsampling, StreamOutput::writeCollection); } else { writeLegacyValue(out, downsampling, StreamOutput::writeCollection); } out.writeBoolean(enabled); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { lifecycleType.writeTo(out); } } @@ -786,26 +779,23 @@ public static Template read(StreamInput in) throws IOException { // The order of the fields is like this for bwc reasons if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { dataRetention = ResettableValue.read(in, StreamInput::readTimeValue); } else { dataRetention = readLegacyValues(in, StreamInput::readTimeValue); } } if (in.getTransportVersion().onOrAfter(ADDED_ENABLED_FLAG_VERSION)) { - if (in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_LIFECYCLE_TEMPLATE_8_19)) { + if (in.getTransportVersion().supports(INTRODUCE_LIFECYCLE_TEMPLATE)) { downsampling = ResettableValue.read(in, i -> i.readCollectionAsList(DownsamplingRound::read)); } else { downsampling = readLegacyValues(in, i -> i.readCollectionAsList(DownsamplingRound::read)); } enabled = in.readBoolean(); } - var lifecycleTarget = in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? LifecycleType.read(in) - : LifecycleType.DATA; + var lifecycleTarget = in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) + ? LifecycleType.read(in) + : LifecycleType.DATA; return new Template(lifecycleTarget, enabled, dataRetention, downsampling); } diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java index f68a6c17494d2..7ef9ed8bfbe2d 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/DataStreamOptions.java @@ -9,7 +9,7 @@ package org.elasticsearch.cluster.metadata; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.SimpleDiffable; import org.elasticsearch.common.Strings; @@ -56,6 +56,8 @@ public record DataStreamOptions(@Nullable DataStreamFailureStore failureStore) ); } + private static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = TransportVersion.fromName("introduce_failures_lifecycle"); + public static DataStreamOptions read(StreamInput in) throws IOException { return new DataStreamOptions(in.readOptionalWriteable(DataStreamFailureStore::new)); } @@ -73,10 +75,7 @@ public boolean isEmpty() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - || failureStore == null - || failureStore().enabled() != null) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) || failureStore == null || failureStore().enabled() != null) { out.writeOptionalWriteable(failureStore); } else { // When communicating with older versions we need to ensure we do not sent an invalid failure store config. @@ -139,8 +138,7 @@ public Template(DataStreamFailureStore.Template template) { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) || failureStore.get() == null || failureStore().mapAndGet(DataStreamFailureStore.Template::enabled).get() != null) { ResettableValue.write(out, failureStore, (o, v) -> v.writeTo(o)); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java index c22e799dc9506..7e0aa32c6a4f5 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadata.java @@ -9,6 +9,7 @@ package org.elasticsearch.cluster.metadata; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.SimpleDiffable; @@ -26,9 +27,6 @@ import java.util.Map; import java.util.Objects; -import static org.elasticsearch.TransportVersions.SEMANTIC_TEXT_CHUNKING_CONFIG; -import static org.elasticsearch.TransportVersions.SEMANTIC_TEXT_CHUNKING_CONFIG_8_19; - /** * Contains inference field data for fields. * As inference is done in the coordinator node to avoid re-doing it at shard / replica level, the coordinator needs to check for the need @@ -42,6 +40,8 @@ public final class InferenceFieldMetadata implements SimpleDiffable globalRetentionStats ) implements Writeable { + private static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = TransportVersion.fromName("introduce_failures_lifecycle"); + public DataStreamStats(StreamInput in) throws IOException { this( in.readVLong(), @@ -134,26 +136,17 @@ public DataStreamStats(StreamInput in) throws IOException { in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0) ? in.readVLong() : 0, in.getTransportVersion().onOrAfter(TransportVersions.FAILURE_STORE_ENABLED_BY_CLUSTER_SETTING) ? in.readVLong() : 0, in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0) ? in.readVLong() : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readVLong() - : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readVLong() - : 0, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) - : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) - : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, - in.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || in.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19) - ? in.readMap(DataStreamLifecycleFeatureSetUsage.GlobalRetentionStats::new) - : Map.of() + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) ? in.readVLong() : 0, + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) + ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) + : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) + ? DataStreamLifecycleFeatureSetUsage.RetentionStats.read(in) + : DataStreamLifecycleFeatureSetUsage.RetentionStats.NO_DATA, + in.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE) + ? in.readMap(DataStreamLifecycleFeatureSetUsage.GlobalRetentionStats::new) + : Map.of() ); } @@ -168,8 +161,7 @@ public void writeTo(StreamOutput out) throws IOException { } out.writeVLong(this.failureStoreIndicesCount); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE) - || out.getTransportVersion().isPatchFrom(TransportVersions.INTRODUCE_FAILURES_LIFECYCLE_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(INTRODUCE_FAILURES_LIFECYCLE)) { out.writeVLong(failuresLifecycleExplicitlyEnabledCount); out.writeVLong(failuresLifecycleEffectivelyEnabledCount); failuresLifecycleDataRetentionStats.writeTo(out); diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java index c0ce92cc87df4..bba30f52c673e 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/RetryActionRequest.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.core.ilm.action; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.IndicesRequest; import org.elasticsearch.action.support.IndicesOptions; @@ -40,9 +39,7 @@ public RetryActionRequest(StreamInput in) throws IOException { super(in); this.indices = in.readStringArray(); this.indicesOptions = IndicesOptions.readIndicesOptions(in); - if (in.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR) - || in.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_19) - || in.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_18)) { + if (in.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR)) { this.requireError = in.readBoolean(); } } @@ -86,9 +83,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeStringArray(indices); indicesOptions.writeIndicesOptions(out); - if (out.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR) - || out.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_19) - || out.getTransportVersion().isPatchFrom(TransportVersions.RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR_8_18)) { + if (out.getTransportVersion().supports(RETRY_ILM_ASYNC_ACTION_REQUIRE_ERROR)) { out.writeBoolean(requireError); } } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java index 7745892507f25..9bbc7fa9e97f8 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/BaseInferenceActionRequest.java @@ -24,6 +24,7 @@ */ public abstract class BaseInferenceActionRequest extends LegacyActionRequest { + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); static final TransportVersion INFERENCE_REQUEST_ADAPTIVE_RATE_LIMITING_REMOVED = TransportVersion.fromName( "inference_request_adaptive_rate_limiting_removed" ); @@ -42,8 +43,7 @@ public BaseInferenceActionRequest(StreamInput in) throws IOException { in.readBoolean(); } - if (in.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || in.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (in.getTransportVersion().supports(INFERENCE_CONTEXT)) { this.context = new InferenceContext(in); } else { this.context = InferenceContext.EMPTY_INSTANCE; @@ -68,8 +68,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(true); } - if (out.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || out.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (out.getTransportVersion().supports(INFERENCE_CONTEXT)) { context.writeTo(out); } } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java index c23996a3ce87a..c3066a56447c9 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceAction.java @@ -94,6 +94,8 @@ public static Builder parseRequest(String inferenceEntityId, TaskType taskType, return builder; } + private static final TransportVersion RERANK_COMMON_OPTIONS_ADDED = TransportVersion.fromName("rerank_common_options_added"); + private final TaskType taskType; private final String inferenceEntityId; private final String query; @@ -182,8 +184,7 @@ public Request(StreamInput in) throws IOException { this.inferenceTimeout = DEFAULT_TIMEOUT; } - if (in.getTransportVersion().onOrAfter(TransportVersions.RERANK_COMMON_OPTIONS_ADDED) - || in.getTransportVersion().isPatchFrom(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19)) { + if (in.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { this.returnDocuments = in.readOptionalBoolean(); this.topN = in.readOptionalInt(); } else { @@ -313,8 +314,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeTimeValue(inferenceTimeout); } - if (out.getTransportVersion().onOrAfter(TransportVersions.RERANK_COMMON_OPTIONS_ADDED) - || out.getTransportVersion().isPatchFrom(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19)) { + if (out.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { out.writeOptionalBoolean(returnDocuments); out.writeOptionalInt(topN); } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java index d8ebe8c0123f6..890a493f0c25d 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/InferenceActionProxy.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.LegacyActionRequest; @@ -40,6 +40,8 @@ public InferenceActionProxy() { public static class Request extends LegacyActionRequest { + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); + private final TaskType taskType; private final String inferenceEntityId; private final BytesReference content; @@ -77,8 +79,7 @@ public Request(StreamInput in) throws IOException { // streaming is not supported yet for transport traffic this.stream = false; - if (in.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || in.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (in.getTransportVersion().supports(INFERENCE_CONTEXT)) { this.context = new InferenceContext(in); } else { this.context = InferenceContext.EMPTY_INSTANCE; @@ -127,8 +128,7 @@ public void writeTo(StreamOutput out) throws IOException { XContentHelper.writeTo(out, contentType); out.writeTimeValue(timeout); - if (out.getTransportVersion().onOrAfter(TransportVersions.INFERENCE_CONTEXT) - || out.getTransportVersion().isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X)) { + if (out.getTransportVersion().supports(INFERENCE_CONTEXT)) { context.writeTo(out); } } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java index cded88c36388c..37fab195adee7 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/PutInferenceModelAction.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; @@ -33,6 +33,10 @@ public class PutInferenceModelAction extends ActionType { + 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; @@ -696,39 +699,37 @@ protected InferenceAction.Request mutateInstanceForVersion(InferenceAction.Reque InferenceAction.Request.DEFAULT_TIMEOUT, false ); - } else if (version.before(TransportVersions.INFERENCE_CONTEXT) - && version.isPatchFrom(TransportVersions.INFERENCE_CONTEXT_8_X) == false) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - instance.getQuery(), - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - instance.getInferenceTimeout(), - false, - InferenceContext.EMPTY_INSTANCE - ); - } else if (version.before(TransportVersions.RERANK_COMMON_OPTIONS_ADDED) - && version.isPatchFrom(TransportVersions.RERANK_COMMON_OPTIONS_ADDED_8_19) == false) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - instance.getQuery(), - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - instance.getInferenceTimeout(), - false, - instance.getContext() - ); - } else { - mutated = instance; - } + } else if (version.supports(INFERENCE_CONTEXT) == false) { + mutated = new InferenceAction.Request( + instance.getTaskType(), + instance.getInferenceEntityId(), + instance.getQuery(), + null, + null, + instance.getInput(), + instance.getTaskSettings(), + instance.getInputType(), + instance.getInferenceTimeout(), + false, + InferenceContext.EMPTY_INSTANCE + ); + } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { + mutated = new InferenceAction.Request( + instance.getTaskType(), + instance.getInferenceEntityId(), + instance.getQuery(), + null, + null, + instance.getInput(), + instance.getTaskSettings(), + instance.getInputType(), + instance.getInferenceTimeout(), + false, + instance.getContext() + ); + } else { + mutated = instance; + } return mutated; } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java index ac5afeb73eb53..4d3589d5eeb4c 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/UnifiedCompletionActionRequestTests.java @@ -25,6 +25,8 @@ public class UnifiedCompletionActionRequestTests extends AbstractBWCWireSerializationTestCase { + private static final TransportVersion INFERENCE_CONTEXT = TransportVersion.fromName("inference_context"); + public void testValidation_ReturnsException_When_UnifiedCompletionRequestMessage_Is_Null() { var request = new UnifiedCompletionAction.Request( "inference_id", @@ -88,7 +90,7 @@ public void testWriteTo_WhenVersionIsBeforeInferenceContext_ShouldSetContextToEm @Override protected UnifiedCompletionAction.Request mutateInstanceForVersion(UnifiedCompletionAction.Request instance, TransportVersion version) { - if (version.before(TransportVersions.INFERENCE_CONTEXT)) { + if (version.supports(INFERENCE_CONTEXT) == false) { return new UnifiedCompletionAction.Request( instance.getInferenceEntityId(), instance.getTaskType(), diff --git a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java index bf6ad214df4b6..708a61d1ed606 100644 --- a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java +++ b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/UnsupportedEsField.java @@ -6,7 +6,7 @@ */ package org.elasticsearch.xpack.esql.core.type; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.xpack.esql.core.util.PlanStreamInput; @@ -24,6 +24,8 @@ */ public class UnsupportedEsField extends EsField { + private static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES = TransportVersion.fromName("esql_report_original_types"); + private final List originalTypes; private final String inherited; // for fields belonging to parents (or grandparents) that have an unsupported type @@ -58,8 +60,7 @@ public UnsupportedEsField(StreamInput in) throws IOException { } private static List readOriginalTypes(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { return in.readCollectionAsList(i -> ((PlanStreamInput) i).readCachedString()); } else { return List.of(((PlanStreamInput) in).readCachedString().split(",")); @@ -69,8 +70,7 @@ private static List readOriginalTypes(StreamInput in) throws IOException @Override public void writeContent(StreamOutput out) throws IOException { ((PlanStreamOutput) out).writeCachedString(getName()); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { out.writeCollection(getOriginalTypes(), (o, s) -> ((PlanStreamOutput) o).writeCachedString(s)); } else { ((PlanStreamOutput) out).writeCachedString(String.join(",", getOriginalTypes())); diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java index ba0925873a44e..c5e84fdf5a741 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/AggregateMetricDoubleBlockBuilder.java @@ -8,7 +8,6 @@ package org.elasticsearch.compute.data; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.GenericNamedWriteable; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; @@ -211,6 +210,11 @@ public String getLabel() { * For all other purposes it is preferred to use the individual builders over the literal for generating blocks when possible. */ public record AggregateMetricDoubleLiteral(Double min, Double max, Double sum, Integer count) implements GenericNamedWriteable { + + private static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL = TransportVersion.fromName( + "esql_aggregate_metric_double_literal" + ); + public AggregateMetricDoubleLiteral { min = (min == null || min.isNaN()) ? null : min; max = (max == null || max.isNaN()) ? null : max; @@ -242,7 +246,7 @@ public void writeTo(StreamOutput out) throws IOException { @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL); + return version.supports(ESQL_AGGREGATE_METRIC_DOUBLE_LITERAL); } @Override diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java index 8af78dc4fa868..c710f049055d0 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/Block.java @@ -10,7 +10,6 @@ import org.apache.lucene.util.Accountable; import org.apache.lucene.util.RamUsageEstimator; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.unit.ByteSizeValue; @@ -41,6 +40,9 @@ * the same block at the same time. */ public interface Block extends Accountable, BlockLoader.Block, Writeable, RefCounted, Releasable { + + TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK = TransportVersion.fromName("esql_aggregate_metric_double_block"); + /** * The maximum number of values that can be added to one position via lookup. * TODO maybe make this everywhere? @@ -373,8 +375,7 @@ static Block readTypedBlock(BlockStreamInput in) throws IOException { } static boolean supportsAggregateMetricDoubleBlock(TransportVersion version) { - return version.onOrAfter(TransportVersions.AGGREGATE_METRIC_DOUBLE_BLOCK) - || version.isPatchFrom(TransportVersions.ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK_8_19); + return version.supports(ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK); } /** diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java index e651a65cf69b2..5202231067787 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ElementType.java @@ -8,7 +8,7 @@ package org.elasticsearch.compute.data; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -66,6 +66,8 @@ public enum ElementType { AggregateMetricDoubleArrayBlock::readFrom ); + private static final TransportVersion ESQL_SERIALIZE_BLOCK_TYPE_CODE = TransportVersion.fromName("esql_serialize_block_type_code"); + private interface BuilderSupplier { Block.Builder newBlockBuilder(BlockFactory blockFactory, int estimatedSize); } @@ -137,8 +139,7 @@ public String pascalCaseName() { * Read element type from an input stream */ static ElementType readFrom(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE_8_19)) { + if (in.getTransportVersion().supports(ESQL_SERIALIZE_BLOCK_TYPE_CODE)) { byte b = in.readByte(); return values()[b]; } else { @@ -152,8 +153,7 @@ static ElementType readFrom(StreamInput in) throws IOException { } void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SERIALIZE_BLOCK_TYPE_CODE_8_19)) { + if (out.getTransportVersion().supports(ESQL_SERIALIZE_BLOCK_TYPE_CODE)) { out.writeByte(writableCode); } else { out.writeString(legacyWritableName); diff --git a/x-pack/plugin/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 653fb27603b03..f51bf6c6b214e 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,9 +43,6 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static org.elasticsearch.TransportVersions.ESQL_REPORT_SHARD_PARTITIONING; -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); @@ -304,6 +301,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; @@ -414,7 +413,7 @@ public void writeTo(StreamOutput out) throws IOException { } private static boolean serializeShardPartitioning(TransportVersion version) { - return version.onOrAfter(ESQL_REPORT_SHARD_PARTITIONING) || version.isPatchFrom(ESQL_REPORT_SHARD_PARTITIONING_8_19); + return version.supports(ESQL_REPORT_SHARD_PARTITIONING); } @Override diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java index 28a486d2d4ced..c92084a4650aa 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverProfile.java @@ -54,8 +54,7 @@ public record DriverProfile( public static DriverProfile readFrom(StreamInput in) throws IOException { return new DriverProfile( - in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19) ? in.readString() : "", + in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) ? in.readString() : "", in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", in.readVLong(), @@ -70,8 +69,7 @@ public static DriverProfile readFrom(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19)) { + if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION)) { out.writeString(description); } if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION)) { diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java index 9d06204964269..4d4a4ec1e8f5d 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverStatus.java @@ -65,8 +65,7 @@ public record DriverStatus( public static DriverStatus readFrom(StreamInput in) throws IOException { return new DriverStatus( in.readString(), - in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19) ? in.readString() : "", + in.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) ? in.readString() : "", in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", in.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION) ? in.readString() : "", in.readLong(), @@ -83,8 +82,7 @@ public static DriverStatus readFrom(StreamInput in) throws IOException { @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(sessionId); - if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_DRIVER_TASK_DESCRIPTION_8_19)) { + if (out.getTransportVersion().supports(ESQL_DRIVER_TASK_DESCRIPTION)) { out.writeString(description); } if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_DRIVER_NODE_DESCRIPTION)) { diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java index bf00094779588..c59714a589e24 100644 --- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java +++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockSerializationTests.java @@ -9,7 +9,6 @@ import org.apache.lucene.util.BytesRef; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.breaker.CircuitBreaker; import org.elasticsearch.common.breaker.CircuitBreakingException; import org.elasticsearch.common.unit.ByteSizeValue; @@ -36,6 +35,10 @@ public class BlockSerializationTests extends SerializationTestCase { + private static final TransportVersion ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK = TransportVersion.fromName( + "esql_aggregate_metric_double_block" + ); + public void testConstantIntBlock() throws IOException { assertConstantBlockImpl(blockFactory.newConstantIntBlockWith(randomInt(), randomIntBetween(1, 8192))); } @@ -425,11 +428,7 @@ public void testCompositeBlock() throws Exception { try ( CompositeBlock deserBlock = serializeDeserializeBlockWithVersion( origBlock, - TransportVersionUtils.randomVersionBetween( - random(), - TransportVersions.AGGREGATE_METRIC_DOUBLE_BLOCK, - TransportVersion.current() - ) + TransportVersionUtils.randomVersionBetween(random(), ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK, TransportVersion.current()) ) ) { assertThat(deserBlock.getBlockCount(), equalTo(numBlocks)); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java index 1f9fa8296c95f..44f921743ff58 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/ColumnInfoImpl.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.esql.action; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.core.Nullable; @@ -43,6 +43,8 @@ public class ColumnInfoImpl implements ColumnInfo { PARSER = parser.build(); } + private static final TransportVersion ESQL_REPORT_ORIGINAL_TYPES = TransportVersion.fromName("esql_report_original_types"); + @Override public boolean equals(Object o) { if (this == o) { @@ -100,8 +102,7 @@ private static DataType calculateSuggestedCast(List originalTypes) { public ColumnInfoImpl(StreamInput in) throws IOException { this.name = in.readString(); this.type = DataType.fromEs(in.readString()); - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { this.originalTypes = in.readOptionalStringCollectionAsList(); this.suggestedCast = calculateSuggestedCast(this.originalTypes); } else { @@ -114,8 +115,7 @@ public ColumnInfoImpl(StreamInput in) throws IOException { public void writeTo(StreamOutput out) throws IOException { out.writeString(name); out.writeString(type.outputType()); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_REPORT_ORIGINAL_TYPES_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_REPORT_ORIGINAL_TYPES)) { out.writeOptionalStringCollection(originalTypes); } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java index 573f0197a7a78..968231ea3c4a2 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeResponse.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.esql.plugin; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.search.ShardSearchFailure; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -25,6 +24,7 @@ */ final class ComputeResponse extends TransportResponse { + private static final TransportVersion ESQL_FAILURE_FROM_REMOTE = TransportVersion.fromName("esql_failure_from_remote"); private static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = TransportVersion.fromName( "esql_documents_found_and_values_loaded" ); @@ -76,8 +76,7 @@ final class ComputeResponse extends TransportResponse { this.successfulShards = in.readVInt(); this.skippedShards = in.readVInt(); this.failedShards = in.readVInt(); - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_FAILURE_FROM_REMOTE) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_FAILURE_FROM_REMOTE_8_19)) { + if (in.getTransportVersion().supports(ESQL_FAILURE_FROM_REMOTE)) { this.failures = in.readCollectionAsImmutableList(ShardSearchFailure::readShardSearchFailure); } else { this.failures = List.of(); @@ -97,8 +96,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVInt(successfulShards); out.writeVInt(skippedShards); out.writeVInt(failedShards); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_FAILURE_FROM_REMOTE) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_FAILURE_FROM_REMOTE_8_19)) { + if (out.getTransportVersion().supports(ESQL_FAILURE_FROM_REMOTE)) { out.writeCollection(failures, (o, v) -> v.writeTo(o)); } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java index 490edec311b36..6cb87aa9aa151 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeHandler.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.esql.plugin; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.ActionListenerResponseHandler; import org.elasticsearch.action.ActionRunnable; @@ -66,6 +65,11 @@ * and executing these computes on the data nodes. */ final class DataNodeComputeHandler implements TransportRequestHandler { + + private static final TransportVersion ESQL_RETRY_ON_SHARD_LEVEL_FAILURE = TransportVersion.fromName( + "esql_retry_on_shard_level_failure" + ); + private final ComputeService computeService; private final SearchService searchService; private final ClusterService clusterService; @@ -534,7 +538,6 @@ public void messageReceived(DataNodeRequest request, TransportChannel channel, T } static boolean supportShardLevelRetryFailure(TransportVersion transportVersion) { - return transportVersion.onOrAfter(TransportVersions.ESQL_RETRY_ON_SHARD_LEVEL_FAILURE) - || transportVersion.isPatchFrom(TransportVersions.ESQL_RETRY_ON_SHARD_LEVEL_FAILURE_BACKPORT_8_19); + return transportVersion.supports(ESQL_RETRY_ON_SHARD_LEVEL_FAILURE); } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java index a9e7d57365340..563382f7886e6 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.esql.session; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.compress.CompressorFactory; import org.elasticsearch.common.io.stream.StreamInput; @@ -40,6 +39,8 @@ public class Configuration implements Writeable { private static final TransportVersion TIMESERIES_DEFAULT_LIMIT = TransportVersion.fromName("timeseries_default_limit"); + private static final TransportVersion ESQL_SUPPORT_PARTIAL_RESULTS = TransportVersion.fromName("esql_support_partial_results"); + private final String clusterName; private final String username; private final ZonedDateTime now; @@ -109,8 +110,7 @@ public Configuration(BlockStreamInput in) throws IOException { this.profile = in.readBoolean(); this.tables = in.readImmutableMap(i1 -> i1.readImmutableMap(i2 -> new Column((BlockStreamInput) i2))); this.queryStartTimeNanos = in.readLong(); - if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19)) { + if (in.getTransportVersion().supports(ESQL_SUPPORT_PARTIAL_RESULTS)) { this.allowPartialResults = in.readBoolean(); } else { this.allowPartialResults = false; @@ -140,8 +140,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(profile); out.writeMap(tables, (o1, columns) -> o1.writeMap(columns, StreamOutput::writeWriteable)); out.writeLong(queryStartTimeNanos); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(ESQL_SUPPORT_PARTIAL_RESULTS)) { out.writeBoolean(allowPartialResults); } if (out.getTransportVersion().supports(TIMESERIES_DEFAULT_LIMIT)) { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java index 5ed5ebdfd1993..7f67b876bcad5 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/registry/ModelRegistryMetadata.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.registry; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.DiffableUtils; import org.elasticsearch.cluster.NamedDiff; @@ -38,8 +37,6 @@ import java.util.Objects; import java.util.Set; -import static org.elasticsearch.TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA; -import static org.elasticsearch.TransportVersions.INFERENCE_MODEL_REGISTRY_METADATA_8_19; import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg; import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstructorArg; @@ -91,6 +88,10 @@ public static ModelRegistryMetadata fromState(ProjectMetadata projectMetadata) { return resp != null ? resp : EMPTY_NOT_UPGRADED; } + private static final TransportVersion INFERENCE_MODEL_REGISTRY_METADATA = TransportVersion.fromName( + "inference_model_registry_metadata" + ); + public ModelRegistryMetadata withAddedModel(String inferenceEntityId, MinimalServiceSettings settings) { final var existing = modelMap.get(inferenceEntityId); if (existing != null && settings.equals(existing)) { @@ -187,7 +188,7 @@ public Iterator toXContentChunked(ToXContent.Params ignore } /** - * Determines whether all models created prior to {@link TransportVersions#INFERENCE_MODEL_REGISTRY_METADATA} + * Determines whether all models created prior to {@link #INFERENCE_MODEL_REGISTRY_METADATA} * have been successfully restored from the {@link InferenceIndex}. * * @return true if all such models have been restored; false otherwise. @@ -237,7 +238,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return INFERENCE_MODEL_REGISTRY_METADATA_8_19; + return INFERENCE_MODEL_REGISTRY_METADATA; } @Override @@ -308,7 +309,7 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { - return INFERENCE_MODEL_REGISTRY_METADATA_8_19; + return INFERENCE_MODEL_REGISTRY_METADATA; } @Override @@ -328,6 +329,6 @@ public Metadata.ProjectCustom apply(Metadata.ProjectCustom part) { } static boolean shouldSerialize(TransportVersion version) { - return version.isPatchFrom(INFERENCE_MODEL_REGISTRY_METADATA_8_19) || version.onOrAfter(INFERENCE_MODEL_REGISTRY_METADATA); + return version.supports(INFERENCE_MODEL_REGISTRY_METADATA); } } 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 ad06e669ff567..72c501f61f48e 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()) { @@ -80,13 +80,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.AMAZON_BEDROCK_TASK_SETTINGS; + return AMAZON_BEDROCK_TASK_SETTINGS; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.AMAZON_BEDROCK_TASK_SETTINGS) - || version.isPatchFrom(TransportVersions.AMAZON_BEDROCK_TASK_SETTINGS_8_19); + return version.supports(AMAZON_BEDROCK_TASK_SETTINGS); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java index c3790bec9f193..c728d22845f7b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingType.java @@ -64,6 +64,10 @@ private static final class RequestConstants { ELEMENT_TYPE_TO_COHERE_EMBEDDING.keySet() ); + private static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "cohere_bit_embedding_type_support_added" + ); + private final DenseVectorFieldMapper.ElementType elementType; private final String requestString; @@ -128,8 +132,7 @@ public static CohereEmbeddingType translateToVersion(CohereEmbeddingType embeddi } if (embeddingType == BIT) { - if (version.onOrAfter(TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED) - || version.isPatchFrom(TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X)) { + if (version.supports(COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED)) { // BIT embedding type is supported in these versions return embeddingType; } else { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java index 06f21e19a6408..246cd92ce94d4 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekChatCompletionModel.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.deepseek; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; @@ -160,6 +159,7 @@ public RateLimitSettings rateLimitSettings() { private record DeepSeekServiceSettings(String modelId, URI uri) implements ServiceSettings { private static final String NAME = "deep_seek_service_settings"; + private static final TransportVersion ML_INFERENCE_DEEPSEEK = TransportVersion.fromName("ml_inference_deepseek"); DeepSeekServiceSettings { Objects.requireNonNull(modelId); @@ -177,13 +177,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_DEEPSEEK; + return ML_INFERENCE_DEEPSEEK; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_DEEPSEEK) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_DEEPSEEK_8_19); + return version.supports(ML_INFERENCE_DEEPSEEK); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java index 54972e23a25d1..ae5928e52f0d4 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/deepseek/DeepSeekService.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.deepseek; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.ValidationException; @@ -59,6 +58,7 @@ public class DeepSeekService extends SenderService { TaskType.CHAT_COMPLETION ); private static final EnumSet SUPPORTED_TASK_TYPES_FOR_STREAMING = EnumSet.of(TaskType.COMPLETION, TaskType.CHAT_COMPLETION); + private static final TransportVersion ML_INFERENCE_DEEPSEEK = TransportVersion.fromName("ml_inference_deepseek"); public DeepSeekService( HttpRequestSender.Factory factory, @@ -177,7 +177,7 @@ public EnumSet supportedTaskTypes() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_DEEPSEEK; + return ML_INFERENCE_DEEPSEEK; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java index e9c869d59a6fc..b0924b5ac6f5b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingType.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.jinaai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; @@ -50,6 +49,10 @@ private static final class RequestConstants { ELEMENT_TYPE_TO_JINA_AI_EMBEDDING.keySet() ); + private static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "jina_ai_embedding_type_support_added" + ); + private final DenseVectorFieldMapper.ElementType elementType; private final String requestString; @@ -109,8 +112,7 @@ public DenseVectorFieldMapper.ElementType toElementType() { * @return the embedding type that is known to the version passed in */ public static JinaAIEmbeddingType translateToVersion(JinaAIEmbeddingType embeddingType, TransportVersion version) { - if (version.onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || version.isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) { + if (version.supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) { return embeddingType; } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java index 09164f9bbc45a..181404018da97 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettings.java @@ -69,6 +69,10 @@ static JinaAIEmbeddingType parseEmbeddingType(Map map, Validatio ); } + private static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "jina_ai_embedding_type_support_added" + ); + private final JinaAIServiceSettings commonSettings; private final SimilarityMeasure similarity; private final Integer dimensions; @@ -95,10 +99,9 @@ public JinaAIEmbeddingsServiceSettings(StreamInput in) throws IOException { this.dimensions = in.readOptionalVInt(); this.maxInputTokens = in.readOptionalVInt(); - this.embeddingType = (in.getTransportVersion().onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || in.getTransportVersion().isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) - ? Objects.requireNonNullElse(in.readOptionalEnum(JinaAIEmbeddingType.class), JinaAIEmbeddingType.FLOAT) - : JinaAIEmbeddingType.FLOAT; + this.embeddingType = (in.getTransportVersion().supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) + ? Objects.requireNonNullElse(in.readOptionalEnum(JinaAIEmbeddingType.class), JinaAIEmbeddingType.FLOAT) + : JinaAIEmbeddingType.FLOAT; } public JinaAIServiceSettings getCommonSettings() { @@ -181,8 +184,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalVInt(dimensions); out.writeOptionalVInt(maxInputTokens); - if (out.getTransportVersion().onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || out.getTransportVersion().isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) { + if (out.getTransportVersion().supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) { out.writeOptionalEnum(JinaAIEmbeddingType.translateToVersion(embeddingType, out.getTransportVersion())); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java index 676a1edec126b..1c27e236c4a0b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/SageMakerService.java @@ -9,7 +9,6 @@ import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.support.SubscribableListener; import org.elasticsearch.cluster.service.ClusterService; @@ -55,6 +54,8 @@ public class SageMakerService implements InferenceService, RerankingInferenceSer private static final List ALIASES = List.of("sagemaker", "amazonsagemaker"); private static final int DEFAULT_BATCH_SIZE = 256; private static final TimeValue DEFAULT_TIMEOUT = TimeValue.THIRTY_SECONDS; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); + private final SageMakerModelBuilder modelBuilder; private final SageMakerClient client; private final SageMakerSchemas schemas; @@ -322,7 +323,7 @@ public Model updateModelWithEmbeddingDetails(Model model, int embeddingSize) { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java index b7a554d387c84..1c49d465c497d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerServiceSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.model; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -58,6 +57,7 @@ record SageMakerServiceSettings( private static final String TARGET_CONTAINER_HOSTNAME = "target_container_hostname"; private static final String INFERENCE_COMPONENT_NAME = "inference_component_name"; private static final String BATCH_SIZE = "batch_size"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); SageMakerServiceSettings { Objects.requireNonNull(endpointName); @@ -112,13 +112,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java index a36944c51f104..6e453c17b82b8 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/model/SageMakerTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.model; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -46,6 +45,7 @@ record SageMakerTaskSettings( private static final String INFERENCE_ID = "inference_id"; private static final String SESSION_ID = "session_id"; private static final String TARGET_VARIANT = "target_variant"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); SageMakerTaskSettings(StreamInput in) throws IOException { this( @@ -112,13 +112,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java index b3d948a85de97..70ed23e215dd6 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredServiceSchema.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.schema; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.inference.ServiceSettings; import org.elasticsearch.xcontent.ToXContentObject; @@ -21,6 +20,7 @@ public interface SageMakerStoredServiceSchema extends ServiceSettings { SageMakerStoredServiceSchema NO_OP = new SageMakerStoredServiceSchema() { private static final String NAME = "noop_sagemaker_service_schema"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); @Override public String getWriteableName() { @@ -30,13 +30,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java index a3ff632f466c2..f45529b4c39b6 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/SageMakerStoredTaskSchema.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.schema; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.inference.TaskSettings; import org.elasticsearch.xcontent.XContentBuilder; @@ -20,6 +19,9 @@ */ public interface SageMakerStoredTaskSchema extends TaskSettings { SageMakerStoredTaskSchema NO_OP = new SageMakerStoredTaskSchema() { + + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); + @Override public boolean isEmpty() { return true; @@ -40,13 +42,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java index 6fcbd309551e3..f060c7a75797b 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/openai/OpenAiTextEmbeddingPayload.java @@ -11,7 +11,6 @@ import software.amazon.awssdk.services.sagemakerruntime.model.InvokeEndpointResponse; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; @@ -126,6 +125,7 @@ public TextEmbeddingFloatResults responseBody(SageMakerModel model, InvokeEndpoi record ApiServiceSettings(@Nullable Integer dimensions, Boolean dimensionsSetByUser) implements SageMakerStoredServiceSchema { private static final String NAME = "sagemaker_openai_text_embeddings_service_settings"; private static final String DIMENSIONS_FIELD = "dimensions"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER = TransportVersion.fromName("ml_inference_sagemaker"); ApiServiceSettings(StreamInput in) throws IOException { this(in.readOptionalInt(), in.readBoolean()); @@ -139,13 +139,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER; + return ML_INFERENCE_SAGEMAKER; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java index f2db85f263f9f..24d82eb764498 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIService.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionListener; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.ValidationException; @@ -109,6 +108,8 @@ public class VoyageAIService extends SenderService implements RerankingInference InputType.INTERNAL_SEARCH ); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public VoyageAIService( HttpRequestSender.Factory factory, ServiceComponents serviceComponents, @@ -364,7 +365,7 @@ static SimilarityMeasure defaultSimilarity() { @Override public TransportVersion getMinimalSupportedVersion() { - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java index ba7db5bc16f47..8676fadb675cd 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/VoyageAIServiceSettings.java @@ -10,7 +10,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -35,6 +34,7 @@ public class VoyageAIServiceSettings extends FilteredXContentObject implements S private static final Logger logger = LogManager.getLogger(VoyageAIServiceSettings.class); // See https://docs.voyageai.com/docs/rate-limits public static final RateLimitSettings DEFAULT_RATE_LIMIT_SETTINGS = new RateLimitSettings(2_000); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); public static VoyageAIServiceSettings fromMap(Map map, ConfigurationParseContext context) { ValidationException validationException = new ValidationException(); @@ -109,13 +109,12 @@ public XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder builder @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java index a0960fb6f74aa..e4da0d75a6b50 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsServiceSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -48,6 +47,8 @@ public class VoyageAIEmbeddingsServiceSettings extends FilteredXContentObject im public static final String EMBEDDING_TYPE = "embedding_type"; + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public static VoyageAIEmbeddingsServiceSettings fromMap(Map map, ConfigurationParseContext context) { return switch (context) { case REQUEST -> fromRequestMap(map, context); @@ -227,13 +228,12 @@ protected XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder buil @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java index 11728075fe2b8..b5b157537506d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/embeddings/VoyageAIEmbeddingsTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -41,6 +40,7 @@ public class VoyageAIEmbeddingsTaskSettings implements TaskSettings { public static final String NAME = "voyageai_embeddings_task_settings"; public static final VoyageAIEmbeddingsTaskSettings EMPTY_SETTINGS = new VoyageAIEmbeddingsTaskSettings(null, null); static final String INPUT_TYPE = "input_type"; + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); public static VoyageAIEmbeddingsTaskSettings fromMap(Map map) { if (map == null || map.isEmpty()) { @@ -163,13 +163,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java index 4e23efac2701c..46da419a34a46 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankServiceSettings.java @@ -10,7 +10,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -31,6 +30,8 @@ public class VoyageAIRerankServiceSettings extends FilteredXContentObject implem private static final Logger logger = LogManager.getLogger(VoyageAIRerankServiceSettings.class); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public static VoyageAIRerankServiceSettings fromMap(Map map, ConfigurationParseContext context) { ValidationException validationException = new ValidationException(); @@ -91,13 +92,12 @@ protected XContentBuilder toXContentFragmentOfExposedFields(XContentBuilder buil @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java index 9e57b58487674..4fe23564d2eeb 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/voyageai/rerank/VoyageAIRerankTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.voyageai.rerank; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -38,6 +37,8 @@ public class VoyageAIRerankTaskSettings implements TaskSettings { public static final VoyageAIRerankTaskSettings EMPTY_SETTINGS = new VoyageAIRerankTaskSettings(null, null, null); + private static final TransportVersion VOYAGE_AI_INTEGRATION_ADDED = TransportVersion.fromName("voyage_ai_integration_added"); + public static VoyageAIRerankTaskSettings fromMap(Map map) { ValidationException validationException = new ValidationException(); @@ -136,13 +137,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.VOYAGE_AI_INTEGRATION_ADDED; + return VOYAGE_AI_INTEGRATION_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED) - || version.isPatchFrom(TransportVersions.VOYAGE_AI_INTEGRATION_ADDED_BACKPORT_8_X); + return version.supports(VOYAGE_AI_INTEGRATION_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java index e514867780669..56b444af2900f 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/PutInferenceModelRequestTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.action; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.inference.TaskType; import org.elasticsearch.xcontent.XContentType; @@ -17,6 +16,11 @@ import org.elasticsearch.xpack.core.ml.AbstractBWCWireSerializationTestCase; public class PutInferenceModelRequestTests extends AbstractBWCWireSerializationTestCase { + + private static final TransportVersion INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT = TransportVersion.fromName( + "inference_add_timeout_put_endpoint" + ); + @Override protected Writeable.Reader instanceReader() { return PutInferenceModelAction.Request::new; @@ -40,8 +44,7 @@ protected PutInferenceModelAction.Request mutateInstance(PutInferenceModelAction @Override protected PutInferenceModelAction.Request mutateInstanceForVersion(PutInferenceModelAction.Request instance, TransportVersion version) { - if (version.onOrAfter(TransportVersions.INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT) - || version.isPatchFrom(TransportVersions.INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT_8_19)) { + if (version.supports(INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT)) { return instance; } else { return new PutInferenceModelAction.Request( diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java index 13e6cbdefe62a..d19010ff7e269 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/embeddings/CohereEmbeddingTypeTests.java @@ -15,6 +15,13 @@ import static org.hamcrest.Matchers.is; public class CohereEmbeddingTypeTests extends ESTestCase { + + private static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "cohere_bit_embedding_type_support_added" + ); + private static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_PATCH = COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED + .nextPatchVersion(); + public void testTranslateToVersion_ReturnsInt8_WhenVersionIsBeforeByteEnumAddition_WhenSpecifyingByte() { assertThat( CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BYTE, new TransportVersion(8_613_00_0)), @@ -66,24 +73,21 @@ public void testTranslateToVersion_ReturnsInt8_WhenVersionIsBeforeBitEnumAdditio public void testTranslateToVersion_ReturnsBit_WhenVersionOnBitEnumAddition_WhenSpecifyingBit() { assertThat( - CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BIT, TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), + CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BIT, COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), is(CohereEmbeddingType.BIT) ); } public void testTranslateToVersion_ReturnsBit_WhenVersionOnBitEnumAdditionPatch_WhenSpecifyingBit() { assertThat( - CohereEmbeddingType.translateToVersion( - CohereEmbeddingType.BIT, - TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_X - ), + CohereEmbeddingType.translateToVersion(CohereEmbeddingType.BIT, COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED_PATCH), is(CohereEmbeddingType.BIT) ); } public void testTranslateToVersion_ReturnsFloat_WhenVersionOnBitEnumAddition_WhenSpecifyingFloat() { assertThat( - CohereEmbeddingType.translateToVersion(CohereEmbeddingType.FLOAT, TransportVersions.COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), + CohereEmbeddingType.translateToVersion(CohereEmbeddingType.FLOAT, COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED), is(CohereEmbeddingType.FLOAT) ); } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java index a1bcc6d9636c0..5e2489b10283e 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/jinaai/embeddings/JinaAIEmbeddingsServiceSettingsTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.jinaai.embeddings; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; @@ -38,6 +37,11 @@ import static org.hamcrest.Matchers.is; public class JinaAIEmbeddingsServiceSettingsTests extends AbstractBWCWireSerializationTestCase { + + private static final TransportVersion JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED = TransportVersion.fromName( + "jina_ai_embedding_type_support_added" + ); + public static JinaAIEmbeddingsServiceSettings createRandom() { SimilarityMeasure similarityMeasure = null; Integer dims = null; @@ -221,8 +225,7 @@ protected JinaAIEmbeddingsServiceSettings mutateInstance(JinaAIEmbeddingsService @Override protected JinaAIEmbeddingsServiceSettings mutateInstanceForVersion(JinaAIEmbeddingsServiceSettings instance, TransportVersion version) { - if (version.onOrAfter(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED) - || version.isPatchFrom(TransportVersions.JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED_BACKPORT_8_19)) { + if (version.supports(JINA_AI_EMBEDDING_TYPE_SUPPORT_ADDED)) { return instance; } diff --git a/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java b/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java index 4f193511550b0..b6c02c993bad2 100644 --- a/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java +++ b/x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRankDoc.java @@ -9,7 +9,6 @@ import org.apache.lucene.search.Explanation; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.search.rank.RankDoc; @@ -19,6 +18,7 @@ public class PinnedRankDoc extends RankDoc { public static final String NAME = "pinned_rank_doc"; + private static final TransportVersion PINNED_RETRIEVER = TransportVersion.fromName("pinned_retriever"); private final boolean isPinned; @@ -81,6 +81,6 @@ public TransportVersion getMinimalSupportedVersion() { @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.PINNED_RETRIEVER) || version.isPatchFrom(TransportVersions.PINNED_RETRIEVER_8_19); + return version.supports(PINNED_RETRIEVER); } }