From 742464c74df38954d38381f3b114e280a93f5f54 Mon Sep 17 00:00:00 2001 From: donalevans Date: Thu, 9 Oct 2025 14:42:49 -0700 Subject: [PATCH 1/2] Remove old transport version support from inference classes The oldest supported version that can upgrade to 9.x is 8.18.0, so any classes that version their serialization based on versions older than 8.18.0 no longer need to do so. This commit removes such versioning from classes in xpack/core/inference and xpack/inference. - Remove versioning from writeTo() methods and constructors that take a StreamInput when the version is older than 8.18.0 - Remove related versioning from test methods for affected classes - Remove deprecated LegacyTextEmbeddingResults class --- .../action/DeleteInferenceEndpointAction.java | 43 ++--- .../action/GetInferenceModelAction.java | 25 +-- .../inference/action/InferenceAction.java | 123 +------------ .../results/LegacyTextEmbeddingResults.java | 165 ------------------ .../inference/results/RankedDocsResults.java | 25 +-- .../results/TextEmbeddingFloatResults.java | 11 -- .../action/InferenceActionRequestTests.java | 162 ++--------------- .../LegacyMlTextEmbeddingResultsTests.java | 121 ------------- .../results/RankedDocsResultsTests.java | 20 +-- .../InferenceNamedWriteablesProvider.java | 8 - .../SentenceBoundaryChunkingSettings.java | 8 +- .../AzureOpenAiEmbeddingsServiceSettings.java | 12 +- .../cohere/CohereServiceSettings.java | 11 +- .../rerank/CohereRerankServiceSettings.java | 21 +-- ...dInternalTextEmbeddingServiceSettings.java | 22 +-- .../ElasticsearchInternalServiceSettings.java | 24 +-- .../GoogleVertexAiEmbeddingsTaskSettings.java | 2 - .../HuggingFaceServiceSettings.java | 32 +--- .../HuggingFaceElserServiceSettings.java | 12 +- .../OpenAiChatCompletionServiceSettings.java | 12 +- .../OpenAiEmbeddingsServiceSettings.java | 50 ++---- .../OpenAiEmbeddingsTaskSettings.java | 16 +- .../action/InferenceActionResponseTests.java | 9 +- .../CohereRerankServiceSettingsTests.java | 11 +- 24 files changed, 94 insertions(+), 851 deletions(-) delete mode 100644 x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/LegacyTextEmbeddingResults.java delete mode 100644 x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/LegacyMlTextEmbeddingResultsTests.java diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java index c3f991a8b4e1e..1db742a2bdc08 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/DeleteInferenceEndpointAction.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.support.master.AcknowledgedRequest; import org.elasticsearch.action.support.master.AcknowledgedResponse; @@ -50,13 +49,8 @@ public Request(StreamInput in) throws IOException { super(in); this.inferenceEndpointId = in.readString(); this.taskType = TaskType.fromStream(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - this.forceDelete = Boolean.TRUE.equals(in.readOptionalBoolean()); - this.dryRun = Boolean.TRUE.equals(in.readOptionalBoolean()); - } else { - this.forceDelete = false; - this.dryRun = false; - } + this.forceDelete = Boolean.TRUE.equals(in.readOptionalBoolean()); + this.dryRun = Boolean.TRUE.equals(in.readOptionalBoolean()); } public String getInferenceEndpointId() { @@ -80,10 +74,8 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(inferenceEndpointId); taskType.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeOptionalBoolean(forceDelete); - out.writeOptionalBoolean(dryRun); - } + out.writeOptionalBoolean(forceDelete); + out.writeOptionalBoolean(dryRun); } @Override @@ -121,32 +113,17 @@ public Response(boolean acknowledged, Set pipelineIds, Set seman public Response(StreamInput in) throws IOException { super(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - pipelineIds = in.readCollectionAsSet(StreamInput::readString); - } else { - pipelineIds = Set.of(); - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - indexes = in.readCollectionAsSet(StreamInput::readString); - dryRunMessage = in.readOptionalString(); - } else { - indexes = Set.of(); - dryRunMessage = null; - } - + pipelineIds = in.readCollectionAsSet(StreamInput::readString); + indexes = in.readCollectionAsSet(StreamInput::readString); + dryRunMessage = in.readOptionalString(); } @Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeCollection(pipelineIds, StreamOutput::writeString); - } - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeCollection(indexes, StreamOutput::writeString); - out.writeOptionalString(dryRunMessage); - } + out.writeCollection(pipelineIds, StreamOutput::writeString); + out.writeCollection(indexes, StreamOutput::writeString); + out.writeOptionalString(dryRunMessage); } @Override diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java index 8bf264024d119..3bfaa94ecfdf1 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/action/GetInferenceModelAction.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.action.support.master.AcknowledgedRequest; @@ -19,7 +18,6 @@ import org.elasticsearch.xcontent.XContentBuilder; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -59,11 +57,7 @@ public Request(StreamInput in) throws IOException { super(in); this.inferenceEntityId = in.readString(); this.taskType = TaskType.fromStream(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - this.persistDefaultConfig = in.readBoolean(); - } else { - this.persistDefaultConfig = PERSIST_DEFAULT_CONFIGS; - } + this.persistDefaultConfig = in.readBoolean(); } public String getInferenceEntityId() { @@ -83,9 +77,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(inferenceEntityId); taskType.writeTo(out); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeBoolean(this.persistDefaultConfig); - } + out.writeBoolean(this.persistDefaultConfig); } @Override @@ -113,12 +105,7 @@ public Response(List endpoints) { } public Response(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - endpoints = in.readCollectionAsList(ModelConfigurations::new); - } else { - endpoints = new ArrayList<>(); - endpoints.add(new ModelConfigurations(in)); - } + endpoints = in.readCollectionAsList(ModelConfigurations::new); } public List getEndpoints() { @@ -127,11 +114,7 @@ public List getEndpoints() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeCollection(endpoints); - } else { - endpoints.get(0).writeTo(out); - } + out.writeCollection(endpoints); } @Override 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 c3066a56447c9..bc61fa8f9c77d 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 @@ -7,9 +7,7 @@ package org.elasticsearch.xpack.core.inference.action; -import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; @@ -19,23 +17,16 @@ import org.elasticsearch.common.xcontent.ChunkedToXContentHelper; import org.elasticsearch.common.xcontent.ChunkedToXContentObject; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.inference.InferenceResults; import org.elasticsearch.inference.InferenceServiceResults; import org.elasticsearch.inference.InputType; import org.elasticsearch.inference.TaskType; -import org.elasticsearch.rest.RestStatus; import org.elasticsearch.xcontent.ObjectParser; import org.elasticsearch.xcontent.ParseField; import org.elasticsearch.xcontent.ToXContent; import org.elasticsearch.xcontent.XContentParser; import org.elasticsearch.xpack.core.inference.InferenceContext; -import org.elasticsearch.xpack.core.inference.results.LegacyTextEmbeddingResults; -import org.elasticsearch.xpack.core.inference.results.SparseEmbeddingResults; -import org.elasticsearch.xpack.core.ml.inference.results.TextExpansionResults; import java.io.IOException; -import java.util.ArrayList; -import java.util.EnumSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -79,12 +70,6 @@ public static Builder builder(String inferenceEntityId, TaskType taskType) { PARSER.declareString(Builder::setInferenceTimeout, TIMEOUT); } - private static final EnumSet validEnumsBeforeUnspecifiedAdded = EnumSet.of(InputType.INGEST, InputType.SEARCH); - private static final EnumSet validEnumsBeforeClassificationClusteringAdded = EnumSet.range( - InputType.INGEST, - InputType.UNSPECIFIED - ); - public static Builder parseRequest(String inferenceEntityId, TaskType taskType, InferenceContext context, XContentParser parser) throws IOException { Request.Builder builder = PARSER.apply(parser, null); @@ -164,25 +149,11 @@ public Request(StreamInput in) throws IOException { super(in); this.taskType = TaskType.fromStream(in); this.inferenceEntityId = in.readString(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - this.input = in.readStringCollectionAsList(); - } else { - this.input = List.of(in.readString()); - } + this.input = in.readStringCollectionAsList(); this.taskSettings = in.readGenericMap(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - this.inputType = in.readEnum(InputType.class); - } else { - this.inputType = InputType.UNSPECIFIED; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - this.query = in.readOptionalString(); - this.inferenceTimeout = in.readTimeValue(); - } else { - this.query = null; - this.inferenceTimeout = DEFAULT_TIMEOUT; - } + this.inputType = in.readEnum(InputType.class); + this.query = in.readOptionalString(); + this.inferenceTimeout = in.readTimeValue(); if (in.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { this.returnDocuments = in.readOptionalBoolean(); @@ -298,21 +269,11 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); taskType.writeTo(out); out.writeString(inferenceEntityId); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeStringCollection(input); - } else { - out.writeString(input.get(0)); - } + out.writeStringCollection(input); out.writeGenericMap(taskSettings); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - out.writeEnum(getInputTypeToWrite(inputType, out.getTransportVersion())); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - out.writeOptionalString(query); - out.writeTimeValue(inferenceTimeout); - } + out.writeEnum(inputType); + out.writeOptionalString(query); + out.writeTimeValue(inferenceTimeout); if (out.getTransportVersion().supports(RERANK_COMMON_OPTIONS_ADDED)) { out.writeOptionalBoolean(returnDocuments); @@ -320,19 +281,6 @@ public void writeTo(StreamOutput out) throws IOException { } } - // default for easier testing - static InputType getInputTypeToWrite(InputType inputType, TransportVersion version) { - if (version.before(TransportVersions.V_8_13_0)) { - if (validEnumsBeforeUnspecifiedAdded.contains(inputType) == false) { - return InputType.INGEST; - } else if (validEnumsBeforeClassificationClusteringAdded.contains(inputType) == false) { - return InputType.UNSPECIFIED; - } - } - - return inputType; - } - @Override public boolean equals(Object o) { if (this == o) return true; @@ -509,65 +457,12 @@ public Response(InferenceServiceResults results, Flow.Publisher parsedResults) { - if (parsedResults.isEmpty()) { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, expected a non-empty list, please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - - if (parsedResults.get(0) instanceof LegacyTextEmbeddingResults openaiResults) { - if (parsedResults.size() > 1) { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, malformed text embedding result," - + " please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - - return openaiResults.transformToTextEmbeddingResults(); - } else if (parsedResults.get(0) instanceof TextExpansionResults) { - return transformToSparseEmbeddingResult(parsedResults); - } else { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, unknown embedding type received," - + " please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - } - - private static SparseEmbeddingResults transformToSparseEmbeddingResult(List parsedResults) { - List textExpansionResults = new ArrayList<>(parsedResults.size()); - - for (InferenceResults result : parsedResults) { - if (result instanceof TextExpansionResults textExpansion) { - textExpansionResults.add(textExpansion); - } else { - throw new ElasticsearchStatusException( - "Failed to transform results to response format, please remove and re-add the service", - RestStatus.INTERNAL_SERVER_ERROR - ); - } - } - - return SparseEmbeddingResults.of(textExpansionResults); - } - public InferenceServiceResults getResults() { return results; } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/LegacyTextEmbeddingResults.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/LegacyTextEmbeddingResults.java deleted file mode 100644 index 60bbeb624b532..0000000000000 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/LegacyTextEmbeddingResults.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - * - * this file was contributed to by a generative AI - */ - -package org.elasticsearch.xpack.core.inference.results; - -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.common.io.stream.Writeable; -import org.elasticsearch.inference.InferenceResults; -import org.elasticsearch.inference.TaskType; -import org.elasticsearch.xcontent.ToXContentObject; -import org.elasticsearch.xcontent.XContentBuilder; - -import java.io.IOException; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -/** - * Writes a text embedding result in the following json format - * { - * "text_embedding": [ - * { - * "embedding": [ - * 0.1 - * ] - * }, - * { - * "embedding": [ - * 0.2 - * ] - * } - * ] - * } - * - * Legacy text embedding results represents what was returned prior to the - * {@link org.elasticsearch.TransportVersions#V_8_12_0} version. - * @deprecated use {@link TextEmbeddingFloatResults} instead - */ -@Deprecated -public record LegacyTextEmbeddingResults(List embeddings) implements InferenceResults { - public static final String NAME = "text_embedding_results"; - public static final String TEXT_EMBEDDING = TaskType.TEXT_EMBEDDING.toString(); - - public LegacyTextEmbeddingResults(StreamInput in) throws IOException { - this(in.readCollectionAsList(Embedding::new)); - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startArray(TEXT_EMBEDDING); - for (Embedding embedding : embeddings) { - embedding.toXContent(builder, params); - } - builder.endArray(); - return builder; - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeCollection(embeddings); - } - - @Override - public String getWriteableName() { - return NAME; - } - - @Override - public String getResultsField() { - return TEXT_EMBEDDING; - } - - @Override - public Map asMap() { - Map map = new LinkedHashMap<>(); - map.put(getResultsField(), embeddings); - - return map; - } - - @Override - public Map asMap(String outputField) { - Map map = new LinkedHashMap<>(); - map.put(outputField, embeddings); - - return map; - } - - @Override - public Object predictedValue() { - throw new UnsupportedOperationException("[" + NAME + "] does not support a single predicted value"); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - LegacyTextEmbeddingResults that = (LegacyTextEmbeddingResults) o; - return Objects.equals(embeddings, that.embeddings); - } - - @Override - public int hashCode() { - return Objects.hash(embeddings); - } - - public TextEmbeddingFloatResults transformToTextEmbeddingResults() { - return new TextEmbeddingFloatResults(this); - } - - public record Embedding(float[] values) implements Writeable, ToXContentObject { - public static final String EMBEDDING = "embedding"; - - public Embedding(StreamInput in) throws IOException { - this(in.readFloatArray()); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeFloatArray(values); - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - - builder.startArray(EMBEDDING); - for (float value : values) { - builder.value(value); - } - builder.endArray(); - - builder.endObject(); - return builder; - } - - @Override - public String toString() { - return Strings.toString(this); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Embedding embedding = (Embedding) o; - return Arrays.equals(values, embedding.values); - } - - @Override - public int hashCode() { - return Arrays.hashCode(values); - } - } -} diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java index 37829816aa3aa..1e931e2666e51 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResults.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.core.inference.results; -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; @@ -112,30 +111,14 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws } public static RankedDoc of(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - return new RankedDoc(in.readInt(), in.readFloat(), in.readOptionalString()); - } else if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - return new RankedDoc(in.readInt(), in.readFloat(), in.readString()); - } else { - return new RankedDoc(Integer.parseInt(in.readString()), Float.parseFloat(in.readString()), in.readString()); - } + return new RankedDoc(in.readInt(), in.readFloat(), in.readOptionalString()); } @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeInt(index); - out.writeFloat(relevanceScore); - out.writeOptionalString(text); - } else if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)) { - out.writeInt(index); - out.writeFloat(relevanceScore); - out.writeString(text == null ? "" : text); - } else { - out.writeString(Integer.toString(index)); - out.writeString(Float.toString(relevanceScore)); - out.writeString(text == null ? "" : text); - } + out.writeInt(index); + out.writeFloat(relevanceScore); + out.writeOptionalString(text); } public Map asMap() { diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java index e68a5e4bd13b0..9dbdccd26e5d2 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java @@ -33,7 +33,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.stream.Collectors; /** * Writes a text embedding result in the follow json format @@ -60,16 +59,6 @@ public TextEmbeddingFloatResults(StreamInput in) throws IOException { this(in.readCollectionAsList(TextEmbeddingFloatResults.Embedding::new)); } - @SuppressWarnings("deprecation") - TextEmbeddingFloatResults(LegacyTextEmbeddingResults legacyTextEmbeddingResults) { - this( - legacyTextEmbeddingResults.embeddings() - .stream() - .map(embedding -> new Embedding(embedding.values())) - .collect(Collectors.toList()) - ); - } - public static TextEmbeddingFloatResults of(List results) { List embeddings = new ArrayList<>(results.size()); for (InferenceResults result : results) { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java index d11a69f76a715..d9d103fb965d9 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/action/InferenceActionRequestTests.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; -import static org.elasticsearch.xpack.core.inference.action.InferenceAction.Request.getInputTypeToWrite; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.collection.IsIterableContainingInOrder.contains; @@ -630,158 +629,41 @@ protected InferenceAction.Request mutateInstance(InferenceAction.Request instanc protected InferenceAction.Request mutateInstanceForVersion(InferenceAction.Request instance, TransportVersion version) { InferenceAction.Request mutated; - if (version.before(TransportVersions.V_8_12_0)) { + if (version.supports(INFERENCE_CONTEXT) == false) { mutated = new InferenceAction.Request( instance.getTaskType(), instance.getInferenceEntityId(), + instance.getQuery(), null, null, - null, - instance.getInput().subList(0, 1), + instance.getInput(), instance.getTaskSettings(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false + instance.getInputType(), + instance.getInferenceTimeout(), + false, + InferenceContext.EMPTY_INSTANCE ); - } else if (version.before(TransportVersions.V_8_13_0)) { + } else if (version.supports(RERANK_COMMON_OPTIONS_ADDED) == false) { mutated = new InferenceAction.Request( instance.getTaskType(), instance.getInferenceEntityId(), - null, + instance.getQuery(), null, null, instance.getInput(), instance.getTaskSettings(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false + instance.getInputType(), + instance.getInferenceTimeout(), + false, + instance.getContext() ); - } else if (version.before(TransportVersions.V_8_13_0) - && (instance.getInputType() == InputType.UNSPECIFIED - || instance.getInputType() == InputType.CLASSIFICATION - || instance.getInputType() == InputType.CLUSTERING)) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - null, - null, - null, - instance.getInput(), - instance.getTaskSettings(), - InputType.INGEST, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - } else if (version.before(TransportVersions.V_8_13_0) - && (instance.getInputType() == InputType.CLUSTERING || instance.getInputType() == InputType.CLASSIFICATION)) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - null, - null, - null, - instance.getInput(), - instance.getTaskSettings(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - } else if (version.before(TransportVersions.V_8_14_0)) { - mutated = new InferenceAction.Request( - instance.getTaskType(), - instance.getInferenceEntityId(), - null, - null, - null, - instance.getInput(), - instance.getTaskSettings(), - instance.getInputType(), - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - } 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; - } + } else { + mutated = instance; + } return mutated; } - public void testWriteTo_WhenVersionIsOnAfterUnspecifiedAdded() throws IOException { - InferenceAction.Request instance = new InferenceAction.Request( - TaskType.TEXT_EMBEDDING, - "model", - null, - null, - null, - List.of(), - Map.of(), - InputType.UNSPECIFIED, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - - InferenceAction.Request deserializedInstance = copyWriteable( - instance, - getNamedWriteableRegistry(), - instanceReader(), - TransportVersions.V_8_13_0 - ); - - assertThat(deserializedInstance.getInputType(), is(InputType.UNSPECIFIED)); - } - - public void testWriteTo_WhenVersionIsBeforeInputTypeAdded_ShouldSetInputTypeToUnspecified() throws IOException { - var instance = new InferenceAction.Request( - TaskType.TEXT_EMBEDDING, - "model", - null, - null, - null, - List.of(), - Map.of(), - InputType.INGEST, - InferenceAction.Request.DEFAULT_TIMEOUT, - false - ); - - InferenceAction.Request deserializedInstance = copyWriteable( - instance, - getNamedWriteableRegistry(), - instanceReader(), - TransportVersions.V_8_12_1 - ); - - assertThat(deserializedInstance.getInputType(), is(InputType.UNSPECIFIED)); - } - public void testWriteTo_ForHasBeenReroutedChanges() throws IOException { var instance = new InferenceAction.Request( TaskType.TEXT_EMBEDDING, @@ -845,16 +727,4 @@ public void testWriteTo_WhenVersionIsBeforeInferenceContext_ShouldSetContextToEm // Verify that context is empty after deserializing a request coming from an older transport version assertThat(deserializedInstance.getContext(), equalTo(InferenceContext.EMPTY_INSTANCE)); } - - public void testGetInputTypeToWrite_ReturnsIngest_WhenInputTypeIsUnspecified_VersionBeforeUnspecifiedIntroduced() { - assertThat(getInputTypeToWrite(InputType.UNSPECIFIED, TransportVersions.V_8_12_1), is(InputType.INGEST)); - } - - public void testGetInputTypeToWrite_ReturnsIngest_WhenInputTypeIsClassification_VersionBeforeUnspecifiedIntroduced() { - assertThat(getInputTypeToWrite(InputType.CLASSIFICATION, TransportVersions.V_8_12_1), is(InputType.INGEST)); - } - - public void testGetInputTypeToWrite_ReturnsIngest_WhenInputTypeIsClustering_VersionBeforeUnspecifiedIntroduced() { - assertThat(getInputTypeToWrite(InputType.CLUSTERING, TransportVersions.V_8_12_1), is(InputType.INGEST)); - } } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/LegacyMlTextEmbeddingResultsTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/LegacyMlTextEmbeddingResultsTests.java deleted file mode 100644 index 6251881e41b8e..0000000000000 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/LegacyMlTextEmbeddingResultsTests.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.core.inference.results; - -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.io.stream.Writeable; -import org.elasticsearch.test.AbstractWireSerializingTestCase; -import org.elasticsearch.xcontent.ToXContentFragment; -import org.elasticsearch.xcontent.XContentBuilder; -import org.elasticsearch.xcontent.XContentFactory; -import org.elasticsearch.xcontent.XContentType; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.Matchers.is; - -@SuppressWarnings("deprecation") -public class LegacyMlTextEmbeddingResultsTests extends AbstractWireSerializingTestCase { - public static LegacyTextEmbeddingResults createRandomResults() { - int embeddings = randomIntBetween(1, 10); - List embeddingResults = new ArrayList<>(embeddings); - - for (int i = 0; i < embeddings; i++) { - embeddingResults.add(createRandomEmbedding()); - } - - return new LegacyTextEmbeddingResults(embeddingResults); - } - - private static LegacyTextEmbeddingResults.Embedding createRandomEmbedding() { - int columns = randomIntBetween(1, 10); - float[] floats = new float[columns]; - for (int i = 0; i < columns; i++) { - floats[i] = randomFloat(); - } - - return new LegacyTextEmbeddingResults.Embedding(floats); - } - - public void testToXContent_CreatesTheRightFormatForASingleEmbedding() throws IOException { - var entity = new LegacyTextEmbeddingResults(List.of(new LegacyTextEmbeddingResults.Embedding(new float[] { 0.1F }))); - - String xContentResult = Strings.toString(entity, true, true); - assertThat(xContentResult, is(""" - { - "text_embedding" : [ - { - "embedding" : [ - 0.1 - ] - } - ] - }""")); - } - - public void testToXContent_CreatesTheRightFormatForMultipleEmbeddings() throws IOException { - var entity = new LegacyTextEmbeddingResults( - List.of( - new LegacyTextEmbeddingResults.Embedding(new float[] { 0.1F }), - new LegacyTextEmbeddingResults.Embedding(new float[] { 0.2F }) - ) - ); - - String xContentResult = Strings.toString(entity, true, true); - assertThat(xContentResult, is(""" - { - "text_embedding" : [ - { - "embedding" : [ - 0.1 - ] - }, - { - "embedding" : [ - 0.2 - ] - } - ] - }""")); - } - - private static String toJsonString(ToXContentFragment entity) throws IOException { - XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON).prettyPrint(); - builder.startObject(); - entity.toXContent(builder, null); - builder.endObject(); - - return Strings.toString(builder); - } - - @Override - protected Writeable.Reader instanceReader() { - return LegacyTextEmbeddingResults::new; - } - - @Override - protected LegacyTextEmbeddingResults createTestInstance() { - return createRandomResults(); - } - - @Override - protected LegacyTextEmbeddingResults mutateInstance(LegacyTextEmbeddingResults instance) throws IOException { - // if true we reduce the embeddings list by a random amount, if false we add an embedding to the list - if (randomBoolean()) { - // -1 to remove at least one item from the list - int end = randomInt(instance.embeddings().size() - 1); - return new LegacyTextEmbeddingResults(instance.embeddings().subList(0, end)); - } else { - List embeddings = new ArrayList<>(instance.embeddings()); - embeddings.add(createRandomEmbedding()); - return new LegacyTextEmbeddingResults(embeddings); - } - } -} diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java index 6873d0e7642d5..917376a745d2c 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/inference/results/RankedDocsResultsTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.core.inference.results; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.xcontent.XContentParser; import org.elasticsearch.xpack.core.ml.AbstractChunkedBWCSerializationTestCase; @@ -58,24 +57,7 @@ protected RankedDocsResults mutateInstance(RankedDocsResults instance) throws IO @Override protected RankedDocsResults mutateInstanceForVersion(RankedDocsResults instance, TransportVersion fromVersion) { - if (fromVersion.onOrAfter(TransportVersions.V_8_15_0)) { - return instance; - } else { - var compatibleDocs = rankedDocsNullStringToEmpty(instance.getRankedDocs()); - return new RankedDocsResults(compatibleDocs); - } - } - - private List rankedDocsNullStringToEmpty(List rankedDocs) { - var result = new ArrayList(rankedDocs.size()); - for (var doc : rankedDocs) { - if (doc.text() == null) { - result.add(new RankedDocsResults.RankedDoc(doc.index(), doc.relevanceScore(), "")); - } else { - result.add(doc); - } - } - return result; + return instance; } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java index e7008c2292def..b1887cff763fa 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java @@ -14,14 +14,12 @@ import org.elasticsearch.inference.ChunkingSettings; import org.elasticsearch.inference.EmptySecretSettings; import org.elasticsearch.inference.EmptyTaskSettings; -import org.elasticsearch.inference.InferenceResults; import org.elasticsearch.inference.InferenceServiceResults; import org.elasticsearch.inference.SecretSettings; import org.elasticsearch.inference.ServiceSettings; import org.elasticsearch.inference.TaskSettings; import org.elasticsearch.inference.UnifiedCompletionRequest; import org.elasticsearch.xpack.core.inference.results.ChatCompletionResults; -import org.elasticsearch.xpack.core.inference.results.LegacyTextEmbeddingResults; import org.elasticsearch.xpack.core.inference.results.RankedDocsResults; import org.elasticsearch.xpack.core.inference.results.SparseEmbeddingResults; import org.elasticsearch.xpack.core.inference.results.StreamingChatCompletionResults; @@ -141,15 +139,9 @@ private InferenceNamedWriteablesProvider() {} * Any new classes which implements NamedWriteable should be added here. * In practice, that is anything which implements TaskSettings, ServiceSettings, or InferenceServiceResults. */ - @SuppressWarnings("deprecation") public static List getNamedWriteables() { List namedWriteables = new ArrayList<>(); - // Legacy inference results - namedWriteables.add( - new NamedWriteableRegistry.Entry(InferenceResults.class, LegacyTextEmbeddingResults.NAME, LegacyTextEmbeddingResults::new) - ); - addInferenceResultsNamedWriteables(namedWriteables); // Empty default task settings diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java index 25b5d248f294b..0700e47bef03d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/chunking/SentenceBoundaryChunkingSettings.java @@ -49,9 +49,7 @@ public SentenceBoundaryChunkingSettings(Integer maxChunkSize, @Nullable Integer public SentenceBoundaryChunkingSettings(StreamInput in) throws IOException { maxChunkSize = in.readInt(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - sentenceOverlap = in.readVInt(); - } + sentenceOverlap = in.readVInt(); } @Override @@ -156,9 +154,7 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { out.writeInt(maxChunkSize); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeVInt(sentenceOverlap); - } + out.writeVInt(sentenceOverlap); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java index 9e8ca478987ec..d1842fe8a1df0 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/embeddings/AzureOpenAiEmbeddingsServiceSettings.java @@ -184,12 +184,7 @@ public AzureOpenAiEmbeddingsServiceSettings(StreamInput in) throws IOException { dimensionsSetByUser = in.readBoolean(); maxInputTokens = in.readOptionalVInt(); similarity = in.readOptionalEnum(SimilarityMeasure.class); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + rateLimitSettings = new RateLimitSettings(in); } private AzureOpenAiEmbeddingsServiceSettings(CommonFields fields) { @@ -302,10 +297,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeBoolean(dimensionsSetByUser); out.writeOptionalVInt(maxInputTokens); out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); } @Override 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 aadd40ccb448a..6b92b75fde9d6 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 @@ -178,12 +178,7 @@ public CohereServiceSettings(StreamInput in) throws IOException { dimensions = in.readOptionalVInt(); maxInputTokens = in.readOptionalVInt(); modelId = in.readOptionalString(); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + rateLimitSettings = new RateLimitSettings(in); if (in.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { this.apiVersion = in.readEnum(CohereServiceSettings.CohereApiVersion.class); } else { @@ -283,9 +278,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalVInt(maxInputTokens); out.writeOptionalString(modelId); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); 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 3da857433704e..2edc2b35de20d 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 @@ -118,12 +118,7 @@ public CohereRerankServiceSettings(StreamInput in) throws IOException { } this.modelId = in.readOptionalString(); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - this.rateLimitSettings = new RateLimitSettings(in); - } else { - this.rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + this.rateLimitSettings = new RateLimitSettings(in); if (in.getTransportVersion().supports(ML_INFERENCE_COHERE_API_VERSION)) { this.apiVersion = in.readEnum(CohereServiceSettings.CohereApiVersion.class); @@ -192,20 +187,8 @@ public TransportVersion getMinimalSupportedVersion() { public void writeTo(StreamOutput out) throws IOException { var uriToWrite = uri != null ? uri.toString() : null; out.writeOptionalString(uriToWrite); - - if (out.getTransportVersion().before(TransportVersions.V_8_16_0)) { - // An old node expects this data to be present, so we need to send at least the booleans - // indicating that the fields are not set - out.writeOptionalEnum(null); - out.writeOptionalVInt(null); - out.writeOptionalVInt(null); - } - out.writeOptionalString(modelId); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); 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/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java index 6395cd36457c2..8e89ea199a323 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/CustomElandInternalTextEmbeddingServiceSettings.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.inference.services.elasticsearch; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.ValidationException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; @@ -124,15 +123,9 @@ private static CommonFields commonFieldsFromMap(Map map, Validat public CustomElandInternalTextEmbeddingServiceSettings(StreamInput in) throws IOException { super(in); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - dimensions = in.readOptionalVInt(); - similarityMeasure = in.readEnum(SimilarityMeasure.class); - elementType = in.readEnum(DenseVectorFieldMapper.ElementType.class); - } else { - dimensions = null; - similarityMeasure = SimilarityMeasure.COSINE; - elementType = DenseVectorFieldMapper.ElementType.FLOAT; - } + dimensions = in.readOptionalVInt(); + similarityMeasure = in.readEnum(SimilarityMeasure.class); + elementType = in.readEnum(DenseVectorFieldMapper.ElementType.class); } private CustomElandInternalTextEmbeddingServiceSettings(CommonFields commonFields) { @@ -182,12 +175,9 @@ public String getWriteableName() { @Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - out.writeOptionalVInt(dimensions); - out.writeEnum(similarityMeasure); - out.writeEnum(elementType); - } + out.writeOptionalVInt(dimensions); + out.writeEnum(similarityMeasure); + out.writeEnum(elementType); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java index 67a537b5ac2c0..cc5c98408ef6e 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elasticsearch/ElasticsearchInternalServiceSettings.java @@ -147,17 +147,11 @@ public ElasticsearchInternalServiceSettings(ElasticsearchInternalServiceSettings } public ElasticsearchInternalServiceSettings(StreamInput in) throws IOException { - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - this.numAllocations = in.readOptionalVInt(); - } else { - this.numAllocations = in.readVInt(); - } + this.numAllocations = in.readOptionalVInt(); this.numThreads = in.readVInt(); this.modelId = in.readString(); - this.adaptiveAllocationsSettings = in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0) - ? in.readOptionalWriteable(AdaptiveAllocationsSettings::new) - : null; - this.deploymentId = in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0) ? in.readOptionalString() : null; + this.adaptiveAllocationsSettings = in.readOptionalWriteable(AdaptiveAllocationsSettings::new); + this.deploymentId = in.readOptionalString(); } public void setAllocations(Integer numAllocations, @Nullable AdaptiveAllocationsSettings adaptiveAllocationsSettings) { @@ -167,17 +161,11 @@ public void setAllocations(Integer numAllocations, @Nullable AdaptiveAllocations @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeOptionalVInt(getNumAllocations()); - } else { - out.writeVInt(getNumAllocations()); - } + out.writeOptionalVInt(getNumAllocations()); out.writeVInt(getNumThreads()); out.writeString(modelId()); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeOptionalWriteable(getAdaptiveAllocationsSettings()); - out.writeOptionalString(deploymentId); - } + out.writeOptionalWriteable(getAdaptiveAllocationsSettings()); + out.writeOptionalString(deploymentId); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java index 2385c13b4f45d..aece798c0247d 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/embeddings/GoogleVertexAiEmbeddingsTaskSettings.java @@ -95,9 +95,7 @@ public GoogleVertexAiEmbeddingsTaskSettings(@Nullable Boolean autoTruncate, @Nul public GoogleVertexAiEmbeddingsTaskSettings(StreamInput in) throws IOException { this.autoTruncate = in.readOptionalBoolean(); - var inputType = in.readOptionalEnum(InputType.class); - validateInputType(inputType); this.inputType = inputType; } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java index 91735d39f3973..0151b75f4ce03 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/HuggingFaceServiceSettings.java @@ -103,21 +103,10 @@ public HuggingFaceServiceSettings(String url) { public HuggingFaceServiceSettings(StreamInput in) throws IOException { this.uri = createUri(in.readString()); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - similarity = in.readOptionalEnum(SimilarityMeasure.class); - dimensions = in.readOptionalVInt(); - maxInputTokens = in.readOptionalVInt(); - } else { - similarity = null; - dimensions = null; - maxInputTokens = null; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + similarity = in.readOptionalEnum(SimilarityMeasure.class); + dimensions = in.readOptionalVInt(); + maxInputTokens = in.readOptionalVInt(); + rateLimitSettings = new RateLimitSettings(in); } @Override @@ -158,15 +147,10 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(uri.toString()); - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); - out.writeOptionalVInt(dimensions); - out.writeOptionalVInt(maxInputTokens); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); + out.writeOptionalVInt(dimensions); + out.writeOptionalVInt(maxInputTokens); + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java index ad771e72b6b35..8cdd427877019 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/huggingface/elser/HuggingFaceElserServiceSettings.java @@ -75,12 +75,7 @@ public HuggingFaceElserServiceSettings(String url) { public HuggingFaceElserServiceSettings(StreamInput in) throws IOException { uri = createUri(in.readString()); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + rateLimitSettings = new RateLimitSettings(in); } @Override @@ -133,10 +128,7 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(uri.toString()); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java index 6d340320c655c..d46c98b9f4901 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/completion/OpenAiChatCompletionServiceSettings.java @@ -118,12 +118,7 @@ public OpenAiChatCompletionServiceSettings(StreamInput in) throws IOException { this.uri = createOptionalUri(in.readOptionalString()); this.organizationId = in.readOptionalString(); this.maxInputTokens = in.readOptionalVInt(); - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + this.rateLimitSettings = new RateLimitSettings(in); } @Override @@ -196,10 +191,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeOptionalString(uri != null ? uri.toString() : null); out.writeOptionalString(organizationId); out.writeOptionalVInt(maxInputTokens); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java index e9b6a7c77a5fa..38a159a4e6359 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsServiceSettings.java @@ -183,29 +183,12 @@ public OpenAiEmbeddingsServiceSettings( public OpenAiEmbeddingsServiceSettings(StreamInput in) throws IOException { uri = createOptionalUri(in.readOptionalString()); organizationId = in.readOptionalString(); - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - similarity = in.readOptionalEnum(SimilarityMeasure.class); - dimensions = in.readOptionalVInt(); - maxInputTokens = in.readOptionalVInt(); - } else { - similarity = null; - dimensions = null; - maxInputTokens = null; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - dimensionsSetByUser = in.readBoolean(); - modelId = in.readString(); - } else { - dimensionsSetByUser = false; - modelId = "unset"; - } - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings = new RateLimitSettings(in); - } else { - rateLimitSettings = DEFAULT_RATE_LIMIT_SETTINGS; - } + similarity = in.readOptionalEnum(SimilarityMeasure.class); + dimensions = in.readOptionalVInt(); + maxInputTokens = in.readOptionalVInt(); + dimensionsSetByUser = in.readBoolean(); + modelId = in.readString(); + rateLimitSettings = new RateLimitSettings(in); } private OpenAiEmbeddingsServiceSettings(CommonFields fields, Boolean dimensionsSetByUser) { @@ -317,21 +300,12 @@ public void writeTo(StreamOutput out) throws IOException { var uriToWrite = uri != null ? uri.toString() : null; out.writeOptionalString(uriToWrite); out.writeOptionalString(organizationId); - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_12_0)) { - out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); - out.writeOptionalVInt(dimensions); - out.writeOptionalVInt(maxInputTokens); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - out.writeBoolean(dimensionsSetByUser); - out.writeString(modelId); - } - - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) { - rateLimitSettings.writeTo(out); - } + out.writeOptionalEnum(SimilarityMeasure.translateSimilarity(similarity, out.getTransportVersion())); + out.writeOptionalVInt(dimensions); + out.writeOptionalVInt(maxInputTokens); + out.writeBoolean(dimensionsSetByUser); + out.writeString(modelId); + rateLimitSettings.writeTo(out); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java index bef64b868fea3..fd75c7b7e2923 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/openai/embeddings/OpenAiEmbeddingsTaskSettings.java @@ -45,14 +45,7 @@ public OpenAiEmbeddingsTaskSettings(StreamInput in) throws IOException { } private static Settings readTaskSettingsFromStream(StreamInput in) throws IOException { - String user; - - if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - user = in.readOptionalString(); - } else { - var discard = in.readString(); - user = in.readOptionalString(); - } + String user = in.readOptionalString(); Map headers; @@ -77,12 +70,7 @@ public TransportVersion getMinimalSupportedVersion() { @Override public void writeTo(StreamOutput out) throws IOException { - if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { - out.writeOptionalString(user()); - } else { - out.writeString("m"); // write any string - out.writeOptionalString(user()); - } + out.writeOptionalString(user()); if (out.getTransportVersion().supports(INFERENCE_API_OPENAI_EMBEDDINGS_HEADERS)) { out.writeOptionalMap(headers(), StreamOutput::writeString, StreamOutput::writeString); diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java index 7625534f8c41d..c7ff03b05e975 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/InferenceActionResponseTests.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.xpack.core.inference.action.InferenceAction; -import org.elasticsearch.xpack.core.inference.results.LegacyMlTextEmbeddingResultsTests; import org.elasticsearch.xpack.core.inference.results.SparseEmbeddingResultsTests; import org.elasticsearch.xpack.core.inference.results.TextEmbeddingFloatResultsTests; import org.elasticsearch.xpack.core.ml.AbstractBWCWireSerializationTestCase; @@ -39,11 +38,9 @@ protected Writeable.Reader instanceReader() { @Override protected InferenceAction.Response createTestInstance() { - var result = switch (randomIntBetween(0, 2)) { - case 0 -> TextEmbeddingFloatResultsTests.createRandomResults(); - case 1 -> LegacyMlTextEmbeddingResultsTests.createRandomResults().transformToTextEmbeddingResults(); - default -> SparseEmbeddingResultsTests.createRandomResults(); - }; + var result = randomBoolean() + ? TextEmbeddingFloatResultsTests.createRandomResults() + : SparseEmbeddingResultsTests.createRandomResults(); return new InferenceAction.Response(result); } 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 08635c25c240d..30c70d0b85aa4 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 @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.inference.services.cohere.rerank; import org.elasticsearch.TransportVersion; -import org.elasticsearch.TransportVersions; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.core.Nullable; @@ -83,15 +82,7 @@ protected CohereRerankServiceSettings mutateInstance(CohereRerankServiceSettings @Override protected CohereRerankServiceSettings mutateInstanceForVersion(CohereRerankServiceSettings instance, TransportVersion version) { - if (version.before(TransportVersions.V_8_15_0)) { - // We always default to the same rate limit settings, if a node is on a version before rate limits were introduced - return new CohereRerankServiceSettings( - instance.uri(), - instance.modelId(), - CohereServiceSettings.DEFAULT_RATE_LIMIT_SETTINGS, - CohereServiceSettings.CohereApiVersion.V1 - ); - } else if (version.supports(ML_INFERENCE_COHERE_API_VERSION) == false) { + if (version.supports(ML_INFERENCE_COHERE_API_VERSION) == false) { return new CohereRerankServiceSettings( instance.uri(), instance.modelId(), From 14a6c94c39985c0660bb1f9cbf8df93c55d3f7e0 Mon Sep 17 00:00:00 2001 From: elasticsearchmachine Date: Thu, 9 Oct 2025 22:28:00 +0000 Subject: [PATCH 2/2] [CI] Auto commit changes from spotless --- .../xpack/core/security/authc/AuthenticationTests.java | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java index 3462663266e9a..447140f2f9571 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authc/AuthenticationTests.java @@ -51,7 +51,6 @@ import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.sameInstance;