diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index a1e2f3c6fbb3b..1750cc642dec6 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -193,17 +193,6 @@ static TransportVersion def(int id) { public static final TransportVersion NONE_CHUNKING_STRATEGY_8_19 = def(8_841_0_49); public static final TransportVersion IDP_CUSTOM_SAML_ATTRIBUTES_ALLOW_LIST_8_19 = def(8_841_0_50); public static final TransportVersion SETTINGS_IN_DATA_STREAMS_8_19 = def(8_841_0_51); - public static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING_8_19 = def(8_841_0_52); - public static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE_8_19 = def(8_841_0_53); - public static final TransportVersion STREAMS_LOGS_SUPPORT_8_19 = def(8_841_0_54); - public static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE_8_19 = def(8_841_0_55); - public static final TransportVersion RANDOM_SAMPLER_QUERY_BUILDER_8_19 = def(8_841_0_56); - public static final TransportVersion ML_INFERENCE_SAGEMAKER_ELASTIC_8_19 = def(8_841_0_57); - public static final TransportVersion SPARSE_VECTOR_FIELD_PRUNING_OPTIONS_8_19 = def(8_841_0_58); - public static final TransportVersion ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED_8_19 = def(8_841_0_59); - public static final TransportVersion ML_INFERENCE_COHERE_API_VERSION_8_19 = def(8_841_0_60); - public static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19 = def(8_841_0_61); - public static final TransportVersion ESQL_PROFILE_INCLUDE_PLAN_8_19 = def(8_841_0_62); public static final TransportVersion INITIAL_ELASTICSEARCH_9_0 = def(9_000_0_00); public static final TransportVersion REMOVE_SNAPSHOT_FAILURES_90 = def(9_000_0_01); public static final TransportVersion TRANSPORT_STATS_HANDLING_TIME_REQUIRED_90 = def(9_000_0_02); @@ -268,14 +257,12 @@ static TransportVersion def(int id) { 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 ESQL_QUERY_PLANNING_DURATION = def(9_055_0_00); - public static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = def(9_056_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 RANDOM_SAMPLER_QUERY_BUILDER = def(9_063_0_00); public static final TransportVersion SETTINGS_IN_DATA_STREAMS = def(9_064_0_00); public static final TransportVersion INTRODUCE_FAILURES_LIFECYCLE = def(9_065_0_00); public static final TransportVersion PROJECT_METADATA_SETTINGS = def(9_066_0_00); @@ -314,16 +301,7 @@ static TransportVersion def(int id) { public static final TransportVersion SECURITY_CLOUD_API_KEY_REALM_AND_TYPE = def(9_099_0_00); public static final TransportVersion STATE_PARAM_GET_SNAPSHOT = def(9_100_0_00); public static final TransportVersion PROJECT_ID_IN_SNAPSHOTS_DELETIONS_AND_REPO_CLEANUP = def(9_101_0_00); - public static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING = def(9_102_0_00); - public static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE = def(9_103_0_00); - public static final TransportVersion STREAMS_LOGS_SUPPORT = def(9_104_0_00); - public static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE = def(9_105_0_00); - public static final TransportVersion ML_INFERENCE_SAGEMAKER_ELASTIC = def(9_106_0_00); - public static final TransportVersion SPARSE_VECTOR_FIELD_PRUNING_OPTIONS = def(9_107_0_00); public static final TransportVersion CLUSTER_STATE_PROJECTS_SETTINGS = def(9_108_0_00); - public static final TransportVersion ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED = def(9_109_00_0); - public static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = def(9_110_0_00); - public static final TransportVersion ESQL_PROFILE_INCLUDE_PLAN = def(9_111_0_00); /* * STOP! READ THIS FIRST! No, really, diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/StreamsMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/StreamsMetadata.java index 7ce18541f9413..89b8f003fe09f 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/StreamsMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/StreamsMetadata.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.metadata; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.cluster.AbstractNamedDiffable; import org.elasticsearch.cluster.NamedDiff; import org.elasticsearch.common.collect.Iterators; @@ -43,6 +42,7 @@ public class StreamsMetadata extends AbstractNamedDiffable readDiffFrom(StreamInput in) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/random/RandomSamplingQueryBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/random/RandomSamplingQueryBuilder.java index 681efdaeb9e3f..87350e90457b5 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/random/RandomSamplingQueryBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/random/RandomSamplingQueryBuilder.java @@ -11,7 +11,6 @@ import org.apache.lucene.search.Query; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Randomness; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -36,6 +35,8 @@ public class RandomSamplingQueryBuilder extends AbstractQueryBuilder queryVectors; @@ -129,8 +130,7 @@ public SparseVectorQueryBuilder(StreamInput in) throws IOException { super(in); this.fieldName = in.readString(); - if (in.getTransportVersion().isPatchFrom(SPARSE_VECTOR_FIELD_PRUNING_OPTIONS_8_19) - || in.getTransportVersion().onOrAfter(SPARSE_VECTOR_FIELD_PRUNING_OPTIONS)) { + if (in.getTransportVersion().supports(SPARSE_VECTOR_FIELD_PRUNING_OPTIONS)) { this.shouldPruneTokens = in.readOptionalBoolean(); } else { this.shouldPruneTokens = in.readBoolean(); @@ -185,8 +185,7 @@ protected void doWriteTo(StreamOutput out) throws IOException { out.writeString(fieldName); - if (out.getTransportVersion().isPatchFrom(SPARSE_VECTOR_FIELD_PRUNING_OPTIONS_8_19) - || out.getTransportVersion().onOrAfter(SPARSE_VECTOR_FIELD_PRUNING_OPTIONS)) { + if (out.getTransportVersion().supports(SPARSE_VECTOR_FIELD_PRUNING_OPTIONS)) { out.writeOptionalBoolean(shouldPruneTokens); } else { out.writeBoolean(shouldPruneTokens); diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/read/ValuesSourceReaderOperatorStatus.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/read/ValuesSourceReaderOperatorStatus.java index 9bc37d239e7f4..ac3a58e14e1c2 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/read/ValuesSourceReaderOperatorStatus.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/read/ValuesSourceReaderOperatorStatus.java @@ -21,9 +21,6 @@ import java.util.Map; import java.util.Objects; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19; - public class ValuesSourceReaderOperatorStatus extends AbstractPageMappingToIteratorOperator.Status { public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry( Operator.Status.class, @@ -31,6 +28,9 @@ public class ValuesSourceReaderOperatorStatus extends AbstractPageMappingToItera ValuesSourceReaderOperatorStatus::readFrom ); + private static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = TransportVersion.fromName( + "esql_documents_found_and_values_loaded" + ); private static final TransportVersion ESQL_SPLIT_ON_BIG_VALUES = TransportVersion.fromName("esql_split_on_big_values"); private final Map readersBuilt; @@ -106,8 +106,7 @@ private static boolean supportsSplitOnBigValues(TransportVersion version) { } private static boolean supportsValuesLoaded(TransportVersion version) { - return version.onOrAfter(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED) - || version.isPatchFrom(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19); + return version.supports(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED); } @Override diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverCompletionInfo.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverCompletionInfo.java index 8f88f9d73b0d4..a1a3ac2070ac0 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverCompletionInfo.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/DriverCompletionInfo.java @@ -7,7 +7,7 @@ package org.elasticsearch.compute.operator; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; @@ -89,15 +89,16 @@ public static DriverCompletionInfo excludingProfiles(List drivers) { return new DriverCompletionInfo(documentsFound, valuesLoaded, List.of(), List.of()); } + private static final TransportVersion ESQL_PROFILE_INCLUDE_PLAN = TransportVersion.fromName("esql_profile_include_plan"); + public static DriverCompletionInfo readFrom(StreamInput in) throws IOException { return new DriverCompletionInfo( in.readVLong(), in.readVLong(), in.readCollectionAsImmutableList(DriverProfile::readFrom), - in.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN_8_19) - ? in.readCollectionAsImmutableList(PlanProfile::readFrom) - : List.of() + in.getTransportVersion().supports(ESQL_PROFILE_INCLUDE_PLAN) + ? in.readCollectionAsImmutableList(PlanProfile::readFrom) + : List.of() ); } @@ -106,8 +107,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeVLong(documentsFound); out.writeVLong(valuesLoaded); out.writeCollection(driverProfiles); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN_8_19)) { + if (out.getTransportVersion().supports(ESQL_PROFILE_INCLUDE_PLAN)) { out.writeCollection(planProfiles); } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryResponse.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryResponse.java index 4afb1418b2585..28f49b61942b3 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryResponse.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryResponse.java @@ -37,9 +37,6 @@ import java.util.Objects; import java.util.Optional; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19; - public class EsqlQueryResponse extends org.elasticsearch.xpack.core.esql.action.EsqlQueryResponse implements ChunkedToXContentObject, @@ -48,6 +45,11 @@ public class EsqlQueryResponse extends org.elasticsearch.xpack.core.esql.action. @SuppressWarnings("this-escape") private final AbstractRefCounted counted = AbstractRefCounted.of(this::closeInternal); + private static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = TransportVersion.fromName( + "esql_documents_found_and_values_loaded" + ); + private static final TransportVersion ESQL_PROFILE_INCLUDE_PLAN = TransportVersion.fromName("esql_profile_include_plan"); + public static final String DROP_NULL_COLUMNS_OPTION = "drop_null_columns"; private final List columns; @@ -169,8 +171,7 @@ public void writeTo(StreamOutput out) throws IOException { } private static boolean supportsValuesLoaded(TransportVersion version) { - return version.onOrAfter(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED) - || version.isPatchFrom(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19); + return version.supports(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED); } public List columns() { @@ -401,18 +402,16 @@ public record Profile(List drivers, List plans) impl public static Profile readFrom(StreamInput in) throws IOException { return new Profile( in.readCollectionAsImmutableList(DriverProfile::readFrom), - in.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN) - || in.getTransportVersion().isPatchFrom(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN_8_19) - ? in.readCollectionAsImmutableList(PlanProfile::readFrom) - : List.of() + in.getTransportVersion().supports(ESQL_PROFILE_INCLUDE_PLAN) + ? in.readCollectionAsImmutableList(PlanProfile::readFrom) + : List.of() ); } @Override public void writeTo(StreamOutput out) throws IOException { out.writeCollection(drivers); - if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN) - || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_PROFILE_INCLUDE_PLAN_8_19)) { + if (out.getTransportVersion().supports(ESQL_PROFILE_INCLUDE_PLAN)) { out.writeCollection(plans); } } 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 ac49213d6151c..4ffa5bca65b24 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 @@ -20,13 +20,15 @@ import java.io.IOException; import java.util.List; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19; - /** * The compute result of {@link DataNodeRequest} or {@link ClusterComputeRequest} */ final class ComputeResponse extends TransportResponse { + + private static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = TransportVersion.fromName( + "esql_documents_found_and_values_loaded" + ); + private final DriverCompletionInfo completionInfo; // for use with ClusterComputeRequests (cross-cluster searches) @@ -114,8 +116,7 @@ public void writeTo(StreamOutput out) throws IOException { } private static boolean supportsCompletionInfo(TransportVersion version) { - return version.onOrAfter(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED) - || version.isPatchFrom(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19); + return version.supports(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED); } public DriverCompletionInfo getCompletionInfo() { diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeResponse.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeResponse.java index e21f6d7e44b56..968b966f09744 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeResponse.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/DataNodeComputeResponse.java @@ -19,13 +19,15 @@ import java.util.List; import java.util.Map; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED; -import static org.elasticsearch.TransportVersions.ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19; - /** * The compute result of {@link DataNodeRequest} */ final class DataNodeComputeResponse extends TransportResponse { + + private static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED = TransportVersion.fromName( + "esql_documents_found_and_values_loaded" + ); + private final DriverCompletionInfo completionInfo; private final Map shardLevelFailures; @@ -68,8 +70,7 @@ public void writeTo(StreamOutput out) throws IOException { } private static boolean supportsCompletionInfo(TransportVersion version) { - return version.onOrAfter(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED) - || version.isPatchFrom(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19); + return version.supports(ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED); } public DriverCompletionInfo completionInfo() { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java index 07b81c22c8083..aadd40ccb448a 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettings.java @@ -49,6 +49,8 @@ public class CohereServiceSettings extends FilteredXContentObject implements Ser public static final String API_VERSION = "api_version"; public static final String MODEL_REQUIRED_FOR_V2_API = "The [service_settings.model_id] field is required for the Cohere V2 API."; + private static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = TransportVersion.fromName("ml_inference_cohere_api_version"); + public enum CohereApiVersion { V1, V2; @@ -182,8 +184,7 @@ public CohereServiceSettings(StreamInput in) throws IOException { } else { rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; } - if (in.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - || in.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19)) { + if (in.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { this.apiVersion = in.readEnum(CohereServiceSettings.CohereApiVersion.class); } else { this.apiVersion = CohereServiceSettings.CohereApiVersion.V1; @@ -285,8 +286,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { rateLimitSettings.writeTo(out); } - if (out.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - || out.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19)) { + if (out.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { out.writeEnum(apiVersion); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettings.java index 7f8ef305e5db6..3f49f5c61a00d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettings.java @@ -40,6 +40,7 @@ public class CohereCompletionServiceSettings extends FilteredXContentObject implements ServiceSettings, CohereRateLimitServiceSettings { public static final String NAME = "cohere_completion_service_settings"; + private static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = TransportVersion.fromName("ml_inference_cohere_api_version"); // Production key rate limits for all endpoints: https://docs.cohere.com/docs/going-live#production-key-specifications // 10K requests per minute @@ -102,8 +103,7 @@ public CohereCompletionServiceSettings(StreamInput in) throws IOException { uri = createOptionalUri(in.readOptionalString()); modelId = in.readOptionalString(); rateLimitSettings = new RateLimitSettings(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - || in.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19)) { + if (in.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { this.apiVersion = in.readEnum(CohereServiceSettings.CohereApiVersion.class); } else { this.apiVersion = CohereServiceSettings.CohereApiVersion.V1; @@ -155,8 +155,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalString(uriToWrite); out.writeOptionalString(modelId); rateLimitSettings.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - || out.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19)) { + if (out.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { out.writeEnum(apiVersion); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java index 651b8758c37f3..3da857433704e 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettings.java @@ -45,6 +45,7 @@ public class CohereRerankServiceSettings extends FilteredXContentObject implements ServiceSettings, CohereRateLimitServiceSettings { public static final String NAME = "cohere_rerank_service_settings"; + private static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = TransportVersion.fromName("ml_inference_cohere_api_version"); public static CohereRerankServiceSettings fromMap(Map map, ConfigurationParseContext context) { ValidationException validationException = new ValidationException(); @@ -124,8 +125,7 @@ public CohereRerankServiceSettings(StreamInput in) throws IOException { this.rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; } - if (in.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - || in.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19)) { + if (in.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { this.apiVersion = in.readEnum(CohereServiceSettings.CohereApiVersion.class); } else { this.apiVersion = CohereServiceSettings.CohereApiVersion.V1; @@ -206,8 +206,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { rateLimitSettings.writeTo(out); } - if (out.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - || out.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19)) { + if (out.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { out.writeEnum(apiVersion); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/custom/CustomServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/custom/CustomServiceSettings.java index 931eb3b798553..8637ff18a000d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/custom/CustomServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/custom/CustomServiceSettings.java @@ -66,6 +66,16 @@ public class CustomServiceSettings extends FilteredXContentObject implements Ser private static final String RESPONSE_SCOPE = String.join(".", ModelConfigurations.SERVICE_SETTINGS, RESPONSE); private static final int DEFAULT_EMBEDDING_BATCH_SIZE = 10; + private static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING = TransportVersion.fromName( + "ml_inference_custom_service_remove_error_parsing" + ); + private static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE = TransportVersion.fromName( + "ml_inference_custom_service_embedding_batch_size" + ); + private static final TransportVersion ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE = TransportVersion.fromName( + "ml_inference_custom_service_input_type" + ); + public static CustomServiceSettings fromMap( Map map, ConfigurationParseContext context, @@ -260,22 +270,19 @@ public CustomServiceSettings(StreamInput in) throws IOException { responseJsonParser = in.readNamedWriteable(CustomResponseParser.class); rateLimitSettings = new RateLimitSettings(in); - if (in.getTransportVersion().before(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING) - && in.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING_8_19) == false) { + if (in.getTransportVersion().supports(ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING) == false) { // Read the error parsing fields for backwards compatibility in.readString(); in.readString(); } - if (in.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE) - || in.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE_8_19)) { + if (in.getTransportVersion().supports(ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE)) { batchSize = in.readVInt(); } else { batchSize = DEFAULT_EMBEDDING_BATCH_SIZE; } - if (in.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE) - || in.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE_8_19)) { + if (in.getTransportVersion().supports(ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE)) { inputTypeTranslator = new InputTypeTranslator(in); } else { inputTypeTranslator = InputTypeTranslator.EMPTY_TRANSLATOR; @@ -414,20 +421,17 @@ public void writeTo(StreamOutput out) throws IOException { out.writeNamedWriteable(responseJsonParser); rateLimitSettings.writeTo(out); - if (out.getTransportVersion().before(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING) - && out.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING_8_19) == false) { + if (out.getTransportVersion().supports(ML_INFERENCE_CUSTOM_SERVICE_REMOVE_ERROR_PARSING) == false) { // Write empty strings for backwards compatibility for the error parsing fields out.writeString(""); out.writeString(""); } - if (out.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE) - || out.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE_8_19)) { + if (out.getTransportVersion().supports(ML_INFERENCE_CUSTOM_SERVICE_EMBEDDING_BATCH_SIZE)) { out.writeVInt(batchSize); } - if (out.getTransportVersion().onOrAfter(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE) - || out.getTransportVersion().isPatchFrom(TransportVersions.ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE_8_19)) { + if (out.getTransportVersion().supports(ML_INFERENCE_CUSTOM_SERVICE_INPUT_TYPE)) { inputTypeTranslator.writeTo(out); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/densetextembeddings/ElasticInferenceServiceDenseTextEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/densetextembeddings/ElasticInferenceServiceDenseTextEmbeddingsServiceSettings.java index e8eeee5a34dd4..8a74f665ae604 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/densetextembeddings/ElasticInferenceServiceDenseTextEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/densetextembeddings/ElasticInferenceServiceDenseTextEmbeddingsServiceSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.elastic.densetextembeddings; 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; @@ -42,9 +41,12 @@ public class ElasticInferenceServiceDenseTextEmbeddingsServiceSettings extends F ElasticInferenceServiceRateLimitServiceSettings { public static final String NAME = "elastic_inference_service_dense_embeddings_service_settings"; - public static final RateLimitSettings DEFAULT_RATE_LIMIT_SETTINGS = new RateLimitSettings(10_000); + private static final TransportVersion ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED = TransportVersion.fromName( + "ml_inference_elastic_dense_text_embeddings_added" + ); + private final String modelId; private final SimilarityMeasure similarity; private final Integer dimensions; @@ -206,13 +208,12 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED; + return ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED_8_19); + return version.supports(ML_INFERENCE_ELASTIC_DENSE_TEXT_EMBEDDINGS_ADDED); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/ElasticTextEmbeddingPayload.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/ElasticTextEmbeddingPayload.java index 6e1407beab1d8..a5fd194f12109 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/ElasticTextEmbeddingPayload.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/ElasticTextEmbeddingPayload.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.ValidationException; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; @@ -61,6 +60,8 @@ public class ElasticTextEmbeddingPayload implements ElasticPayload { private static final EnumSet SUPPORTED_TASKS = EnumSet.of(TaskType.TEXT_EMBEDDING); private static final ParseField EMBEDDING = new ParseField("embedding"); + private static final TransportVersion ML_INFERENCE_SAGEMAKER_ELASTIC = TransportVersion.fromName("ml_inference_sagemaker_elastic"); + @Override public EnumSet supportedTasks() { return SUPPORTED_TASKS; @@ -251,13 +252,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER_ELASTIC; + return ML_INFERENCE_SAGEMAKER_ELASTIC; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER_ELASTIC) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_ELASTIC_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER_ELASTIC); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/SageMakerElasticTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/SageMakerElasticTaskSettings.java index dc0bc91fccd75..d219253376ede 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/SageMakerElasticTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/SageMakerElasticTaskSettings.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.sagemaker.schema.elastic; 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; @@ -26,6 +25,7 @@ */ record SageMakerElasticTaskSettings(@Nullable Map passthroughSettings) implements SageMakerStoredTaskSchema { static final String NAME = "sagemaker_elastic_task_settings"; + private static final TransportVersion ML_INFERENCE_SAGEMAKER_ELASTIC = TransportVersion.fromName("ml_inference_sagemaker_elastic"); static SageMakerElasticTaskSettings empty() { return new SageMakerElasticTaskSettings(Map.of()); @@ -63,13 +63,12 @@ public String getWriteableName() { @Override public TransportVersion getMinimalSupportedVersion() { assert false : "should never be called when supportsVersion is used"; - return TransportVersions.ML_INFERENCE_SAGEMAKER_ELASTIC; + return ML_INFERENCE_SAGEMAKER_ELASTIC; } @Override public boolean supportsVersion(TransportVersion version) { - return version.onOrAfter(TransportVersions.ML_INFERENCE_SAGEMAKER_ELASTIC) - || version.isPatchFrom(TransportVersions.ML_INFERENCE_SAGEMAKER_ELASTIC_8_19); + return version.supports(ML_INFERENCE_SAGEMAKER_ELASTIC); } @Override diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettingsTests.java index cac416fd454a8..c711fe2da79fc 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/CohereServiceSettingsTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.cohere; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.Writeable; @@ -34,6 +33,8 @@ public class CohereServiceSettingsTests extends AbstractBWCWireSerializationTestCase { + private static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = TransportVersion.fromName("ml_inference_cohere_api_version"); + public static CohereServiceSettings createRandomWithNonNullUrl() { return createRandom(randomAlphaOfLength(15)); } @@ -364,8 +365,7 @@ public static Map getServiceSettingsMap(@Nullable String url, @N @Override protected CohereServiceSettings mutateInstanceForVersion(CohereServiceSettings instance, TransportVersion version) { - if (version.before(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - && (version.isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19) == false)) { + if (version.supports(ML_INFERENCE_COHERE_API_VERSION) == false) { return new CohereServiceSettings( instance.uri(), instance.similarity(), diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettingsTests.java index 92ebb3fdc0a00..0e4f364d58c56 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/completion/CohereCompletionServiceSettingsTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.cohere.completion; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.xcontent.XContentBuilder; @@ -29,6 +28,8 @@ public class CohereCompletionServiceSettingsTests extends AbstractBWCWireSerializationTestCase { + private static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = TransportVersion.fromName("ml_inference_cohere_api_version"); + public static CohereCompletionServiceSettings createRandom() { return new CohereCompletionServiceSettings( randomAlphaOfLength(8), @@ -115,8 +116,7 @@ protected CohereCompletionServiceSettings mutateInstance(CohereCompletionService @Override protected CohereCompletionServiceSettings mutateInstanceForVersion(CohereCompletionServiceSettings instance, TransportVersion version) { - if (version.before(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - && (version.isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19) == false)) { + if (version.supports(ML_INFERENCE_COHERE_API_VERSION) == false) { return new CohereCompletionServiceSettings( instance.uri(), instance.modelId(), diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java index 773ccc5933aa7..08635c25c240d 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/cohere/rerank/CohereRerankServiceSettingsTests.java @@ -28,6 +28,9 @@ import static org.elasticsearch.xpack.inference.MatchersUtils.equalToIgnoringWhitespaceInJsonString; public class CohereRerankServiceSettingsTests extends AbstractBWCWireSerializationTestCase { + + private static final TransportVersion ML_INFERENCE_COHERE_API_VERSION = TransportVersion.fromName("ml_inference_cohere_api_version"); + public static CohereRerankServiceSettings createRandom() { return createRandom(randomFrom(new RateLimitSettings[] { null, RateLimitSettingsTests.createRandom() })); } @@ -88,15 +91,14 @@ protected CohereRerankServiceSettings mutateInstanceForVersion(CohereRerankServi CohereServiceSettings.DEFAULT_RATE_LIMIT_SETTINGS, CohereServiceSettings.CohereApiVersion.V1 ); - } else if (version.before(TransportVersions.ML_INFERENCE_COHERE_API_VERSION) - && version.isPatchFrom(TransportVersions.ML_INFERENCE_COHERE_API_VERSION_8_19) == false) { - return new CohereRerankServiceSettings( - instance.uri(), - instance.modelId(), - instance.rateLimitSettings(), - CohereServiceSettings.CohereApiVersion.V1 - ); - } + } else if (version.supports(ML_INFERENCE_COHERE_API_VERSION) == false) { + return new CohereRerankServiceSettings( + instance.uri(), + instance.modelId(), + instance.rateLimitSettings(), + CohereServiceSettings.CohereApiVersion.V1 + ); + } return instance; }