diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index 686d9a1848996..ca43951a91b39 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -260,11 +260,6 @@ static TransportVersion def(int id) { 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 CLUSTER_STATE_PROJECTS_SETTINGS = def(9_108_0_00); - public static final TransportVersion INDEX_SOURCE = def(9_158_0_00); - public static final TransportVersion MAX_HEAP_SIZE_PER_NODE_IN_CLUSTER_INFO = def(9_159_0_00); - public static final TransportVersion TIMESERIES_DEFAULT_LIMIT = def(9_160_0_00); - public static final TransportVersion INFERENCE_API_OPENAI_HEADERS = def(9_161_0_00); - public static final TransportVersion NEW_SEMANTIC_QUERY_INTERCEPTORS = def(9_162_0_00); /* * STOP! READ THIS FIRST! No, really, diff --git a/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java b/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java index e3fe113c2b976..28f774b01b132 100644 --- a/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java +++ b/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java @@ -75,8 +75,10 @@ public class IndexRequest extends ReplicatedWriteRequest implements DocWriteRequest, CompositeIndicesRequest { private static final long SHALLOW_SIZE = RamUsageEstimator.shallowSizeOfInstance(IndexRequest.class); + private static final TransportVersion PIPELINES_HAVE_RUN_FIELD_ADDED = TransportVersions.V_8_10_X; private static final TransportVersion INDEX_REQUEST_INCLUDE_TSID = TransportVersion.fromName("index_request_include_tsid"); + private static final TransportVersion INDEX_SOURCE = TransportVersion.fromName("index_source"); private static final Supplier ID_GENERATOR = UUIDs::base64UUID; @@ -164,7 +166,7 @@ public IndexRequest(@Nullable ShardId shardId, StreamInput in) throws IOExceptio } id = in.readOptionalString(); routing = in.readOptionalString(); - boolean beforeSourceContext = in.getTransportVersion().before(TransportVersions.INDEX_SOURCE); + boolean beforeSourceContext = in.getTransportVersion().supports(INDEX_SOURCE) == false; BytesReference source; IndexSource localIndexSource = null; if (beforeSourceContext) { @@ -765,7 +767,7 @@ private void writeBody(StreamOutput out) throws IOException { } out.writeOptionalString(id); out.writeOptionalString(routing); - if (out.getTransportVersion().onOrAfter(TransportVersions.INDEX_SOURCE)) { + if (out.getTransportVersion().supports(INDEX_SOURCE)) { indexSource.writeTo(out); } else { out.writeBytesReference(indexSource.bytes()); @@ -778,7 +780,7 @@ private void writeBody(StreamOutput out) throws IOException { out.writeBoolean(isPipelineResolved); out.writeBoolean(isRetry); out.writeLong(autoGeneratedTimestamp); - if (out.getTransportVersion().before(TransportVersions.INDEX_SOURCE)) { + if (out.getTransportVersion().supports(INDEX_SOURCE) == false) { XContentType contentType = indexSource.contentType(); if (contentType != null) { out.writeBoolean(true); diff --git a/server/src/main/java/org/elasticsearch/cluster/ClusterInfo.java b/server/src/main/java/org/elasticsearch/cluster/ClusterInfo.java index 3659f86a980a0..87d67e95cf0e9 100644 --- a/server/src/main/java/org/elasticsearch/cluster/ClusterInfo.java +++ b/server/src/main/java/org/elasticsearch/cluster/ClusterInfo.java @@ -54,6 +54,9 @@ public class ClusterInfo implements ChunkedToXContent, Writeable, ExpectedShardS "node_usage_stats_for_thread_pools_in_cluster_info" ); private static final TransportVersion SHARD_WRITE_LOAD_IN_CLUSTER_INFO = TransportVersion.fromName("shard_write_load_in_cluster_info"); + private static final TransportVersion MAX_HEAP_SIZE_PER_NODE_IN_CLUSTER_INFO = TransportVersion.fromName( + "max_heap_size_per_node_in_cluster_info" + ); private final Map leastAvailableSpaceUsage; private final Map mostAvailableSpaceUsage; @@ -131,7 +134,7 @@ public ClusterInfo(StreamInput in) throws IOException { } else { this.shardWriteLoads = Map.of(); } - if (in.getTransportVersion().onOrAfter(TransportVersions.MAX_HEAP_SIZE_PER_NODE_IN_CLUSTER_INFO)) { + if (in.getTransportVersion().supports(MAX_HEAP_SIZE_PER_NODE_IN_CLUSTER_INFO)) { this.maxHeapSizePerNode = in.readImmutableMap(ByteSizeValue::readFrom); } else { this.maxHeapSizePerNode = Map.of(); @@ -155,7 +158,7 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().supports(SHARD_WRITE_LOAD_IN_CLUSTER_INFO)) { out.writeMap(this.shardWriteLoads, StreamOutput::writeWriteable, StreamOutput::writeDouble); } - if (out.getTransportVersion().onOrAfter(TransportVersions.MAX_HEAP_SIZE_PER_NODE_IN_CLUSTER_INFO)) { + if (out.getTransportVersion().supports(MAX_HEAP_SIZE_PER_NODE_IN_CLUSTER_INFO)) { out.writeMap(this.maxHeapSizePerNode, StreamOutput::writeWriteable); } } diff --git a/server/src/main/resources/transport/definitions/referable/index_source.csv b/server/src/main/resources/transport/definitions/referable/index_source.csv new file mode 100644 index 0000000000000..a1aaf7e459bc8 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/index_source.csv @@ -0,0 +1 @@ +9158000 diff --git a/server/src/main/resources/transport/definitions/referable/inference_api_openai_headers.csv b/server/src/main/resources/transport/definitions/referable/inference_api_openai_headers.csv new file mode 100644 index 0000000000000..6e642e5750bc6 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/inference_api_openai_headers.csv @@ -0,0 +1 @@ +9161000 diff --git a/server/src/main/resources/transport/definitions/referable/max_heap_size_per_node_in_cluster_info.csv b/server/src/main/resources/transport/definitions/referable/max_heap_size_per_node_in_cluster_info.csv new file mode 100644 index 0000000000000..fe2a20609f322 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/max_heap_size_per_node_in_cluster_info.csv @@ -0,0 +1 @@ +9159000 diff --git a/server/src/main/resources/transport/definitions/referable/new_semantic_query_interceptors.csv b/server/src/main/resources/transport/definitions/referable/new_semantic_query_interceptors.csv new file mode 100644 index 0000000000000..bdea3b46f326a --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/new_semantic_query_interceptors.csv @@ -0,0 +1 @@ +9162000 diff --git a/server/src/main/resources/transport/definitions/referable/timeseries_default_limit.csv b/server/src/main/resources/transport/definitions/referable/timeseries_default_limit.csv new file mode 100644 index 0000000000000..0a51102fac6e7 --- /dev/null +++ b/server/src/main/resources/transport/definitions/referable/timeseries_default_limit.csv @@ -0,0 +1 @@ +9160000 diff --git a/server/src/test/java/org/elasticsearch/TransportVersionTests.java b/server/src/test/java/org/elasticsearch/TransportVersionTests.java index 4a8b182d90900..5cbd6d2d5d66c 100644 --- a/server/src/test/java/org/elasticsearch/TransportVersionTests.java +++ b/server/src/test/java/org/elasticsearch/TransportVersionTests.java @@ -419,7 +419,7 @@ public void testTransportVersionsLocked() { "TransportVersions.java is locked. Generate transport versions with TransportVersion.fromName " + "and generateTransportVersion gradle task", TransportVersions.DEFINED_VERSIONS.getLast().id(), - equalTo(9_162_0_00) + equalTo(9_108_0_00) ); } } diff --git a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/DataType.java b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/DataType.java index b4e135fa21e7c..b7a3204c43692 100644 --- a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/DataType.java +++ b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/DataType.java @@ -33,7 +33,6 @@ import java.util.stream.Collectors; import static java.util.stream.Collectors.toMap; -import static org.elasticsearch.TransportVersions.INDEX_SOURCE; /** * This enum represents data types the ES|QL query processing layer is able to @@ -297,9 +296,9 @@ public enum DataType implements Writeable { // NOTE: If INDEX_SOURCE somehow gets backported to a version that doesn't actually support these types, we'll be missing validation for // mixed/multi clusters with remotes that don't support these types. This is low-ish risk because these types require specific // geo functions to turn up in the query, and those types aren't available before 9.2.0 either. - GEOHASH(builder().esType("geohash").typeName("GEOHASH").estimatedSize(Long.BYTES).supportedOn(INDEX_SOURCE)), - GEOTILE(builder().esType("geotile").typeName("GEOTILE").estimatedSize(Long.BYTES).supportedOn(INDEX_SOURCE)), - GEOHEX(builder().esType("geohex").typeName("GEOHEX").estimatedSize(Long.BYTES).supportedOn(INDEX_SOURCE)), + GEOHASH(builder().esType("geohash").typeName("GEOHASH").estimatedSize(Long.BYTES).supportedOn(DataTypesTransportVersions.INDEX_SOURCE)), + GEOTILE(builder().esType("geotile").typeName("GEOTILE").estimatedSize(Long.BYTES).supportedOn(DataTypesTransportVersions.INDEX_SOURCE)), + GEOHEX(builder().esType("geohex").typeName("GEOHEX").estimatedSize(Long.BYTES).supportedOn(DataTypesTransportVersions.INDEX_SOURCE)), /** * Fields with this type represent a Lucene doc id. This field is a bit magic in that: @@ -322,7 +321,9 @@ public enum DataType implements Writeable { // NOTE: If INDEX_SOURCE somehow gets backported to a version that doesn't actually support _tsid, we'll be missing validation for // mixed/multi clusters with remotes that don't support these types. This is low-ish risk because _tsid requires specifically being // used in `FROM idx METADATA _tsid` or in the `TS` command, which both weren't available before 9.2.0. - TSID_DATA_TYPE(builder().esType("_tsid").estimatedSize(Long.BYTES * 2).docValues().supportedOn(INDEX_SOURCE)), + TSID_DATA_TYPE( + builder().esType("_tsid").estimatedSize(Long.BYTES * 2).docValues().supportedOn(DataTypesTransportVersions.INDEX_SOURCE) + ), /** * Fields with this type are the partial result of running a non-time-series aggregation * inside alongside time-series aggregations. These fields are not parsable from the @@ -971,6 +972,9 @@ Builder underConstruction() { } private static class DataTypesTransportVersions { + + public static final TransportVersion INDEX_SOURCE = TransportVersion.fromName("index_source"); + public static final TransportVersion ESQL_DENSE_VECTOR_CREATED_VERSION = TransportVersion.fromName( "esql_dense_vector_created_version" ); diff --git a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/AllSupportedFieldsTestCase.java b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/AllSupportedFieldsTestCase.java index 18df765576566..d8596e6943bbc 100644 --- a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/AllSupportedFieldsTestCase.java +++ b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/AllSupportedFieldsTestCase.java @@ -39,7 +39,6 @@ import java.util.TreeMap; import java.util.stream.Collectors; -import static org.elasticsearch.TransportVersions.INDEX_SOURCE; import static org.elasticsearch.common.xcontent.support.XContentMapValues.extractValue; import static org.elasticsearch.test.ListMatcher.matchesList; import static org.elasticsearch.test.MapMatcher.assertMap; @@ -70,6 +69,8 @@ public class AllSupportedFieldsTestCase extends ESRestTestCase { private static final Logger logger = LogManager.getLogger(FieldExtractorTestCase.class); + private static final TransportVersion INDEX_SOURCE = TransportVersion.fromName("index_source"); + @Rule(order = Integer.MIN_VALUE) public ProfileLogger profileLogger = new ProfileLogger(); @@ -445,7 +446,7 @@ private Matcher expectedValue(DataType type) { } private Matcher> expectedDenseVector(TransportVersion version) { - return version.onOrAfter(INDEX_SOURCE) // *after* 9.1 + return version.supports(INDEX_SOURCE) // *after* 9.1 ? matchesList().item(0.5).item(10.0).item(5.9999995) : matchesList().item(0.04283529).item(0.85670584).item(0.5140235); } 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 c998dcb838c31..a9e7d57365340 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/Configuration.java @@ -7,6 +7,7 @@ package org.elasticsearch.xpack.esql.session; +import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.compress.CompressorFactory; @@ -37,6 +38,8 @@ public class Configuration implements Writeable { public static final int QUERY_COMPRESS_THRESHOLD_CHARS = KB.toIntBytes(5); public static final ZoneId DEFAULT_TZ = ZoneOffset.UTC; + private static final TransportVersion TIMESERIES_DEFAULT_LIMIT = TransportVersion.fromName("timeseries_default_limit"); + private final String clusterName; private final String username; private final ZonedDateTime now; @@ -112,7 +115,7 @@ public Configuration(BlockStreamInput in) throws IOException { } else { this.allowPartialResults = false; } - if (in.getTransportVersion().onOrAfter(TransportVersions.TIMESERIES_DEFAULT_LIMIT)) { + if (in.getTransportVersion().supports(TIMESERIES_DEFAULT_LIMIT)) { this.resultTruncationMaxSizeTimeseries = in.readVInt(); this.resultTruncationDefaultSizeTimeseries = in.readVInt(); } else { @@ -141,7 +144,7 @@ public void writeTo(StreamOutput out) throws IOException { || out.getTransportVersion().isPatchFrom(TransportVersions.ESQL_SUPPORT_PARTIAL_RESULTS_BACKPORT_8_19)) { out.writeBoolean(allowPartialResults); } - if (out.getTransportVersion().onOrAfter(TransportVersions.TIMESERIES_DEFAULT_LIMIT)) { + if (out.getTransportVersion().supports(TIMESERIES_DEFAULT_LIMIT)) { out.writeVInt(resultTruncationMaxSizeTimeseries); out.writeVInt(resultTruncationDefaultSizeTimeseries); } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceKnnVectorQueryBuilder.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceKnnVectorQueryBuilder.java index 0696185e11650..210ab2b67f9c9 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceKnnVectorQueryBuilder.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceKnnVectorQueryBuilder.java @@ -8,7 +8,7 @@ package org.elasticsearch.xpack.inference.queries; import org.apache.lucene.search.join.ScoreMode; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ResolvedIndices; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.metadata.InferenceFieldMetadata; @@ -42,6 +42,8 @@ public class InterceptedInferenceKnnVectorQueryBuilder extends InterceptedInfere @SuppressWarnings("deprecation") private static final QueryRewriteInterceptor BWC_INTERCEPTOR = new LegacySemanticKnnVectorQueryRewriteInterceptor(); + private static final TransportVersion NEW_SEMANTIC_QUERY_INTERCEPTORS = TransportVersion.fromName("new_semantic_query_interceptors"); + public InterceptedInferenceKnnVectorQueryBuilder(KnnVectorQueryBuilder originalQuery) { super(originalQuery); } @@ -117,7 +119,7 @@ protected void coordinatorNodeValidate(ResolvedIndices resolvedIndices) { @Override protected QueryBuilder doRewriteBwC(QueryRewriteContext queryRewriteContext) { QueryBuilder rewritten = this; - if (queryRewriteContext.getMinTransportVersion().before(TransportVersions.NEW_SEMANTIC_QUERY_INTERCEPTORS)) { + if (queryRewriteContext.getMinTransportVersion().supports(NEW_SEMANTIC_QUERY_INTERCEPTORS) == false) { rewritten = BWC_INTERCEPTOR.interceptAndRewrite(queryRewriteContext, originalQuery); } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilder.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilder.java index 69cbf665cc1f8..a689c8a3a7f1e 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilder.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilder.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.inference.queries; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.query.MatchNoneQueryBuilder; @@ -27,6 +27,8 @@ public class InterceptedInferenceMatchQueryBuilder extends InterceptedInferenceQ @SuppressWarnings("deprecation") private static final QueryRewriteInterceptor BWC_INTERCEPTOR = new LegacySemanticMatchQueryRewriteInterceptor(); + private static final TransportVersion NEW_SEMANTIC_QUERY_INTERCEPTORS = TransportVersion.fromName("new_semantic_query_interceptors"); + public InterceptedInferenceMatchQueryBuilder(MatchQueryBuilder originalQuery) { super(originalQuery); } @@ -63,7 +65,7 @@ protected String getQuery() { @Override protected QueryBuilder doRewriteBwC(QueryRewriteContext queryRewriteContext) { QueryBuilder rewritten = this; - if (queryRewriteContext.getMinTransportVersion().before(TransportVersions.NEW_SEMANTIC_QUERY_INTERCEPTORS)) { + if (queryRewriteContext.getMinTransportVersion().supports(NEW_SEMANTIC_QUERY_INTERCEPTORS) == false) { rewritten = BWC_INTERCEPTOR.interceptAndRewrite(queryRewriteContext, originalQuery); } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilder.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilder.java index dab789c0223e7..d2f94593f4340 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilder.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilder.java @@ -8,7 +8,7 @@ package org.elasticsearch.xpack.inference.queries; import org.apache.lucene.search.join.ScoreMode; -import org.elasticsearch.TransportVersions; +import org.elasticsearch.TransportVersion; import org.elasticsearch.action.ResolvedIndices; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.metadata.InferenceFieldMetadata; @@ -41,6 +41,8 @@ public class InterceptedInferenceSparseVectorQueryBuilder extends InterceptedInf @SuppressWarnings("deprecation") private static final QueryRewriteInterceptor BWC_INTERCEPTOR = new LegacySemanticSparseVectorQueryRewriteInterceptor(); + private static final TransportVersion NEW_SEMANTIC_QUERY_INTERCEPTORS = TransportVersion.fromName("new_semantic_query_interceptors"); + public InterceptedInferenceSparseVectorQueryBuilder(SparseVectorQueryBuilder originalQuery) { super(originalQuery); } @@ -104,7 +106,7 @@ protected void coordinatorNodeValidate(ResolvedIndices resolvedIndices) { @Override protected QueryBuilder doRewriteBwC(QueryRewriteContext queryRewriteContext) { QueryBuilder rewritten = this; - if (queryRewriteContext.getMinTransportVersion().before(TransportVersions.NEW_SEMANTIC_QUERY_INTERCEPTORS)) { + if (queryRewriteContext.getMinTransportVersion().supports(NEW_SEMANTIC_QUERY_INTERCEPTORS) == false) { rewritten = BWC_INTERCEPTOR.interceptAndRewrite(queryRewriteContext, originalQuery); } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettings.java index 40013263f440d..39350a9eea9f1 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettings.java @@ -17,12 +17,12 @@ import java.io.IOException; import java.util.Map; -import static org.elasticsearch.TransportVersions.INFERENCE_API_OPENAI_HEADERS; - public class OpenAiChatCompletionTaskSettings extends OpenAiTaskSettings { public static final String NAME = "openai_completion_task_settings"; + private static final TransportVersion INFERENCE_API_OPENAI_HEADERS = TransportVersion.fromName("inference_api_openai_headers"); + public OpenAiChatCompletionTaskSettings(Map map) { super(map); } @@ -40,7 +40,7 @@ private static Settings readTaskSettingsFromStream(StreamInput in) throws IOExce Map headers; - if (in.getTransportVersion().onOrAfter(INFERENCE_API_OPENAI_HEADERS)) { + if (in.getTransportVersion().supports(INFERENCE_API_OPENAI_HEADERS)) { headers = in.readOptionalImmutableMap(StreamInput::readString, StreamInput::readString); } else { headers = null; @@ -62,7 +62,7 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { out.writeOptionalString(user()); - if (out.getTransportVersion().onOrAfter(INFERENCE_API_OPENAI_HEADERS)) { + if (out.getTransportVersion().supports(INFERENCE_API_OPENAI_HEADERS)) { out.writeOptionalMap(headers(), StreamOutput::writeString, StreamOutput::writeString); } } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/AbstractInterceptedInferenceQueryBuilderTestCase.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/AbstractInterceptedInferenceQueryBuilderTestCase.java index f999c0f89ae90..169ae6767303d 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/AbstractInterceptedInferenceQueryBuilderTestCase.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/AbstractInterceptedInferenceQueryBuilderTestCase.java @@ -67,7 +67,6 @@ import java.util.Map; import java.util.function.Supplier; -import static org.elasticsearch.TransportVersions.NEW_SEMANTIC_QUERY_INTERCEPTORS; import static org.elasticsearch.TransportVersions.V_8_15_0; import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.InferenceConfig.DEFAULT_RESULTS_FIELD; import static org.elasticsearch.xpack.inference.queries.InterceptedInferenceQueryBuilder.INFERENCE_RESULTS_MAP_WITH_CLUSTER_ALIAS; @@ -107,6 +106,8 @@ public abstract class AbstractInterceptedInferenceQueryBuilderTestCase { + private static final TransportVersion NEW_SEMANTIC_QUERY_INTERCEPTORS = TransportVersion.fromName("new_semantic_query_interceptors"); + @Override protected Collection getPlugins() { List plugins = new ArrayList<>(super.getPlugins()); @@ -82,7 +83,7 @@ protected void assertCoordinatorNodeRewriteOnInferenceField( QueryRewriteContext queryRewriteContext ) { assertThat(original, instanceOf(KnnVectorQueryBuilder.class)); - if (transportVersion.onOrAfter(TransportVersions.NEW_SEMANTIC_QUERY_INTERCEPTORS)) { + if (transportVersion.supports(NEW_SEMANTIC_QUERY_INTERCEPTORS)) { assertThat(rewritten, instanceOf(InterceptedInferenceKnnVectorQueryBuilder.class)); InterceptedInferenceKnnVectorQueryBuilder intercepted = (InterceptedInferenceKnnVectorQueryBuilder) rewritten; diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilderTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilderTests.java index c7a680f15d6d1..ed87d5adda0b6 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilderTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceMatchQueryBuilderTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.queries; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.index.query.MatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryRewriteContext; @@ -23,6 +22,9 @@ import static org.hamcrest.Matchers.notNullValue; public class InterceptedInferenceMatchQueryBuilderTests extends AbstractInterceptedInferenceQueryBuilderTestCase { + + private static final TransportVersion NEW_SEMANTIC_QUERY_INTERCEPTORS = TransportVersion.fromName("new_semantic_query_interceptors"); + @Override protected MatchQueryBuilder createQueryBuilder(String field) { return new MatchQueryBuilder(field, "foo").boost(randomFloatBetween(0.1f, 4.0f, true)).queryName(randomAlphanumericOfLength(5)); @@ -54,7 +56,7 @@ protected void assertCoordinatorNodeRewriteOnInferenceField( QueryRewriteContext queryRewriteContext ) throws Exception { assertThat(original, instanceOf(MatchQueryBuilder.class)); - if (transportVersion.onOrAfter(TransportVersions.NEW_SEMANTIC_QUERY_INTERCEPTORS)) { + if (transportVersion.supports(NEW_SEMANTIC_QUERY_INTERCEPTORS)) { assertThat(rewritten, instanceOf(InterceptedInferenceMatchQueryBuilder.class)); InterceptedInferenceMatchQueryBuilder intercepted = (InterceptedInferenceMatchQueryBuilder) rewritten; diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilderTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilderTests.java index 9a44222b16cc3..43c2f00b56f40 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilderTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/queries/InterceptedInferenceSparseVectorQueryBuilderTests.java @@ -9,7 +9,6 @@ import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.query.NestedQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; @@ -37,6 +36,9 @@ public class InterceptedInferenceSparseVectorQueryBuilderTests extends AbstractInterceptedInferenceQueryBuilderTestCase< SparseVectorQueryBuilder> { + + private static final TransportVersion NEW_SEMANTIC_QUERY_INTERCEPTORS = TransportVersion.fromName("new_semantic_query_interceptors"); + @Override protected Collection getPlugins() { List plugins = new ArrayList<>(super.getPlugins()); @@ -82,7 +84,7 @@ protected void assertCoordinatorNodeRewriteOnInferenceField( QueryRewriteContext queryRewriteContext ) { assertThat(original, instanceOf(SparseVectorQueryBuilder.class)); - if (transportVersion.onOrAfter(TransportVersions.NEW_SEMANTIC_QUERY_INTERCEPTORS)) { + if (transportVersion.supports(NEW_SEMANTIC_QUERY_INTERCEPTORS)) { assertThat(rewritten, instanceOf(InterceptedInferenceSparseVectorQueryBuilder.class)); InterceptedInferenceSparseVectorQueryBuilder intercepted = (InterceptedInferenceSparseVectorQueryBuilder) rewritten; diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettingsTests.java index a1410ec2a32fa..dea171bf96a21 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionTaskSettingsTests.java @@ -14,10 +14,10 @@ import java.util.Map; -import static org.elasticsearch.TransportVersions.INFERENCE_API_OPENAI_HEADERS; - public class OpenAiChatCompletionTaskSettingsTests extends OpenAiTaskSettingsTests { + private static final TransportVersion INFERENCE_API_OPENAI_HEADERS = TransportVersion.fromName("inference_api_openai_headers"); + @Override protected Writeable.Reader instanceReader() { return OpenAiChatCompletionTaskSettings::new; @@ -33,7 +33,7 @@ protected OpenAiChatCompletionTaskSettings mutateInstanceForVersion( OpenAiChatCompletionTaskSettings instance, TransportVersion version ) { - if (version.onOrAfter(INFERENCE_API_OPENAI_HEADERS)) { + if (version.supports(INFERENCE_API_OPENAI_HEADERS)) { return instance; }