1
0
Эх сурвалжийг харах

Move InferenceConfigUpdate under VersionedNamedWriteable (#84022)

In #81809 we introduced a mechanism to check searializability of search request
to earlier version nodes already on the coordinating node. This requires
knowledge about the version that NamedWritable classes have been introduced,
which is why we started moving classes that are used inside the search request
under the VersionedNamedWriteable interface to make sure future additions
implement the mthod that provides the version information.

This change moves the InferenceConfigUpdate and implementing classes under that
sub-interface. I have used the versions they were first released in
looking at the pull requests that introduced the classes.
Christoph Büscher 3 жил өмнө
parent
commit
e7ca5324a0
11 өөрчлөгдсөн 74 нэмэгдсэн , 5 устгасан
  1. 7 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/ClassificationConfigUpdate.java
  2. 6 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/EmptyConfigUpdate.java
  3. 7 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/FillMaskConfigUpdate.java
  4. 2 2
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/InferenceConfigUpdate.java
  5. 7 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/NerConfigUpdate.java
  6. 7 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/PassThroughConfigUpdate.java
  7. 8 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/RegressionConfigUpdate.java
  8. 6 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/ResultsFieldUpdate.java
  9. 10 3
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/TextClassificationConfigUpdate.java
  10. 7 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/TextEmbeddingConfigUpdate.java
  11. 7 0
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/ZeroShotClassificationConfigUpdate.java

+ 7 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/ClassificationConfigUpdate.java

@@ -6,6 +6,7 @@
  */
  */
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xcontent.ObjectParser;
 import org.elasticsearch.xcontent.ObjectParser;
@@ -121,6 +122,7 @@ public class ClassificationConfigUpdate implements InferenceConfigUpdate, NamedX
         return topClassesResultsField;
         return topClassesResultsField;
     }
     }
 
 
+    @Override
     public String getResultsField() {
     public String getResultsField() {
         return resultsField;
         return resultsField;
     }
     }
@@ -246,6 +248,11 @@ public class ClassificationConfigUpdate implements InferenceConfigUpdate, NamedX
             && (predictionFieldType == null || predictionFieldType.equals(originalConfig.getPredictionFieldType()));
             && (predictionFieldType == null || predictionFieldType.equals(originalConfig.getPredictionFieldType()));
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_7_8_0;
+    }
+
     public static class Builder implements InferenceConfigUpdate.Builder<Builder, ClassificationConfigUpdate> {
     public static class Builder implements InferenceConfigUpdate.Builder<Builder, ClassificationConfigUpdate> {
         private Integer numTopClasses;
         private Integer numTopClasses;
         private String topClassesResultsField;
         private String topClassesResultsField;

+ 6 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/EmptyConfigUpdate.java

@@ -65,6 +65,11 @@ public class EmptyConfigUpdate implements InferenceConfigUpdate {
         return EmptyConfigUpdate.class.hashCode();
         return EmptyConfigUpdate.class.hashCode();
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_7_9_0;
+    }
+
     public static class Builder implements InferenceConfigUpdate.Builder<Builder, EmptyConfigUpdate> {
     public static class Builder implements InferenceConfigUpdate.Builder<Builder, EmptyConfigUpdate> {
 
 
         @Override
         @Override
@@ -72,6 +77,7 @@ public class EmptyConfigUpdate implements InferenceConfigUpdate {
             return this;
             return this;
         }
         }
 
 
+        @Override
         public EmptyConfigUpdate build() {
         public EmptyConfigUpdate build() {
             return new EmptyConfigUpdate();
             return new EmptyConfigUpdate();
         }
         }

+ 7 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/FillMaskConfigUpdate.java

@@ -7,6 +7,7 @@
 
 
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xcontent.ObjectParser;
 import org.elasticsearch.xcontent.ObjectParser;
@@ -101,6 +102,11 @@ public class FillMaskConfigUpdate extends NlpConfigUpdate implements NamedXConte
         return NAME;
         return NAME;
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_8_0_0;
+    }
+
     @Override
     @Override
     public InferenceConfig apply(InferenceConfig originalConfig) {
     public InferenceConfig apply(InferenceConfig originalConfig) {
         if (originalConfig instanceof FillMaskConfig == false) {
         if (originalConfig instanceof FillMaskConfig == false) {
@@ -191,6 +197,7 @@ public class FillMaskConfigUpdate extends NlpConfigUpdate implements NamedXConte
             return this;
             return this;
         }
         }
 
 
+        @Override
         public FillMaskConfigUpdate build() {
         public FillMaskConfigUpdate build() {
             return new FillMaskConfigUpdate(this.numTopClasses, this.resultsField, this.tokenizationUpdate);
             return new FillMaskConfigUpdate(this.numTopClasses, this.resultsField, this.tokenizationUpdate);
         }
         }

+ 2 - 2
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/InferenceConfigUpdate.java

@@ -6,7 +6,7 @@
  */
  */
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
-import org.elasticsearch.common.io.stream.NamedWriteable;
+import org.elasticsearch.common.io.stream.VersionedNamedWriteable;
 import org.elasticsearch.xpack.core.ml.inference.TrainedModelConfig;
 import org.elasticsearch.xpack.core.ml.inference.TrainedModelConfig;
 import org.elasticsearch.xpack.core.ml.inference.results.WarningInferenceResults;
 import org.elasticsearch.xpack.core.ml.inference.results.WarningInferenceResults;
 import org.elasticsearch.xpack.core.ml.utils.ExceptionsHelper;
 import org.elasticsearch.xpack.core.ml.utils.ExceptionsHelper;
@@ -15,7 +15,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.Set;
 
 
-public interface InferenceConfigUpdate extends NamedWriteable {
+public interface InferenceConfigUpdate extends VersionedNamedWriteable {
     Set<String> RESERVED_ML_FIELD_NAMES = new HashSet<>(
     Set<String> RESERVED_ML_FIELD_NAMES = new HashSet<>(
         Arrays.asList(WarningInferenceResults.WARNING.getPreferredName(), TrainedModelConfig.MODEL_ID.getPreferredName())
         Arrays.asList(WarningInferenceResults.WARNING.getPreferredName(), TrainedModelConfig.MODEL_ID.getPreferredName())
     );
     );

+ 7 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/NerConfigUpdate.java

@@ -7,6 +7,7 @@
 
 
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xcontent.ObjectParser;
 import org.elasticsearch.xcontent.ObjectParser;
@@ -144,6 +145,11 @@ public class NerConfigUpdate extends NlpConfigUpdate {
         return Objects.hash(resultsField, tokenizationUpdate);
         return Objects.hash(resultsField, tokenizationUpdate);
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_8_0_0;
+    }
+
     public static class Builder implements InferenceConfigUpdate.Builder<NerConfigUpdate.Builder, NerConfigUpdate> {
     public static class Builder implements InferenceConfigUpdate.Builder<NerConfigUpdate.Builder, NerConfigUpdate> {
         private String resultsField;
         private String resultsField;
         private TokenizationUpdate tokenizationUpdate;
         private TokenizationUpdate tokenizationUpdate;
@@ -159,6 +165,7 @@ public class NerConfigUpdate extends NlpConfigUpdate {
             return this;
             return this;
         }
         }
 
 
+        @Override
         public NerConfigUpdate build() {
         public NerConfigUpdate build() {
             return new NerConfigUpdate(resultsField, tokenizationUpdate);
             return new NerConfigUpdate(resultsField, tokenizationUpdate);
         }
         }

+ 7 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/PassThroughConfigUpdate.java

@@ -7,6 +7,7 @@
 
 
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xcontent.ObjectParser;
 import org.elasticsearch.xcontent.ObjectParser;
@@ -146,6 +147,11 @@ public class PassThroughConfigUpdate extends NlpConfigUpdate implements NamedXCo
         return Objects.hash(resultsField, tokenizationUpdate);
         return Objects.hash(resultsField, tokenizationUpdate);
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_8_0_0;
+    }
+
     public static class Builder implements InferenceConfigUpdate.Builder<PassThroughConfigUpdate.Builder, PassThroughConfigUpdate> {
     public static class Builder implements InferenceConfigUpdate.Builder<PassThroughConfigUpdate.Builder, PassThroughConfigUpdate> {
         private String resultsField;
         private String resultsField;
         private TokenizationUpdate tokenizationUpdate;
         private TokenizationUpdate tokenizationUpdate;
@@ -161,6 +167,7 @@ public class PassThroughConfigUpdate extends NlpConfigUpdate implements NamedXCo
             return this;
             return this;
         }
         }
 
 
+        @Override
         public PassThroughConfigUpdate build() {
         public PassThroughConfigUpdate build() {
             return new PassThroughConfigUpdate(this.resultsField, tokenizationUpdate);
             return new PassThroughConfigUpdate(this.resultsField, tokenizationUpdate);
         }
         }

+ 8 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/RegressionConfigUpdate.java

@@ -6,6 +6,7 @@
  */
  */
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xcontent.ObjectParser;
 import org.elasticsearch.xcontent.ObjectParser;
@@ -84,6 +85,7 @@ public class RegressionConfigUpdate implements InferenceConfigUpdate, NamedXCont
         return numTopFeatureImportanceValues;
         return numTopFeatureImportanceValues;
     }
     }
 
 
+    @Override
     public String getResultsField() {
     public String getResultsField() {
         return resultsField;
         return resultsField;
     }
     }
@@ -109,6 +111,11 @@ public class RegressionConfigUpdate implements InferenceConfigUpdate, NamedXCont
         return NAME.getPreferredName();
         return NAME.getPreferredName();
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_7_8_0;
+    }
+
     @Override
     @Override
     public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
     public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
         builder.startObject();
         builder.startObject();
@@ -186,6 +193,7 @@ public class RegressionConfigUpdate implements InferenceConfigUpdate, NamedXCont
             return this;
             return this;
         }
         }
 
 
+        @Override
         public RegressionConfigUpdate build() {
         public RegressionConfigUpdate build() {
             return new RegressionConfigUpdate(resultsField, numTopFeatureImportanceValues);
             return new RegressionConfigUpdate(resultsField, numTopFeatureImportanceValues);
         }
         }

+ 6 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/ResultsFieldUpdate.java

@@ -7,6 +7,7 @@
 
 
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xpack.core.ml.utils.ExceptionsHelper;
 import org.elasticsearch.xpack.core.ml.utils.ExceptionsHelper;
@@ -68,6 +69,11 @@ public class ResultsFieldUpdate implements InferenceConfigUpdate {
         return NAME;
         return NAME;
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_7_9_0;
+    }
+
     @Override
     @Override
     public void writeTo(StreamOutput out) throws IOException {
     public void writeTo(StreamOutput out) throws IOException {
         out.writeString(resultsField);
         out.writeString(resultsField);

+ 10 - 3
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/TextClassificationConfigUpdate.java

@@ -7,6 +7,7 @@
 
 
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xcontent.ObjectParser;
 import org.elasticsearch.xcontent.ObjectParser;
@@ -21,10 +22,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Objects;
 
 
+import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.NlpConfig.CLASSIFICATION_LABELS;
+import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.NlpConfig.NUM_TOP_CLASSES;
+import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.NlpConfig.RESULTS_FIELD;
 import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.NlpConfig.TOKENIZATION;
 import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.NlpConfig.TOKENIZATION;
-import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.TextClassificationConfig.CLASSIFICATION_LABELS;
-import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.TextClassificationConfig.NUM_TOP_CLASSES;
-import static org.elasticsearch.xpack.core.ml.inference.trainedmodel.TextClassificationConfig.RESULTS_FIELD;
 
 
 public class TextClassificationConfigUpdate extends NlpConfigUpdate implements NamedXContentObject {
 public class TextClassificationConfigUpdate extends NlpConfigUpdate implements NamedXContentObject {
 
 
@@ -96,6 +97,11 @@ public class TextClassificationConfigUpdate extends NlpConfigUpdate implements N
         return NAME;
         return NAME;
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_8_0_0;
+    }
+
     @Override
     @Override
     public void writeTo(StreamOutput out) throws IOException {
     public void writeTo(StreamOutput out) throws IOException {
         super.writeTo(out);
         super.writeTo(out);
@@ -237,6 +243,7 @@ public class TextClassificationConfigUpdate extends NlpConfigUpdate implements N
             return this;
             return this;
         }
         }
 
 
+        @Override
         public TextClassificationConfigUpdate build() {
         public TextClassificationConfigUpdate build() {
             return new TextClassificationConfigUpdate(
             return new TextClassificationConfigUpdate(
                 this.classificationLabels,
                 this.classificationLabels,

+ 7 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/TextEmbeddingConfigUpdate.java

@@ -7,6 +7,7 @@
 
 
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.xcontent.ObjectParser;
 import org.elasticsearch.xcontent.ObjectParser;
@@ -95,6 +96,11 @@ public class TextEmbeddingConfigUpdate extends NlpConfigUpdate implements NamedX
         return NAME;
         return NAME;
     }
     }
 
 
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_8_0_0;
+    }
+
     @Override
     @Override
     public InferenceConfig apply(InferenceConfig originalConfig) {
     public InferenceConfig apply(InferenceConfig originalConfig) {
         if ((resultsField == null || resultsField.equals(originalConfig.getResultsField())) && super.isNoop()) {
         if ((resultsField == null || resultsField.equals(originalConfig.getResultsField())) && super.isNoop()) {
@@ -160,6 +166,7 @@ public class TextEmbeddingConfigUpdate extends NlpConfigUpdate implements NamedX
             return this;
             return this;
         }
         }
 
 
+        @Override
         public TextEmbeddingConfigUpdate build() {
         public TextEmbeddingConfigUpdate build() {
             return new TextEmbeddingConfigUpdate(resultsField, tokenizationUpdate);
             return new TextEmbeddingConfigUpdate(resultsField, tokenizationUpdate);
         }
         }

+ 7 - 0
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/ZeroShotClassificationConfigUpdate.java

@@ -7,6 +7,7 @@
 
 
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 package org.elasticsearch.xpack.core.ml.inference.trainedmodel;
 
 
+import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.core.Nullable;
 import org.elasticsearch.core.Nullable;
@@ -235,8 +236,14 @@ public class ZeroShotClassificationConfigUpdate extends NlpConfigUpdate implemen
             return this;
             return this;
         }
         }
 
 
+        @Override
         public ZeroShotClassificationConfigUpdate build() {
         public ZeroShotClassificationConfigUpdate build() {
             return new ZeroShotClassificationConfigUpdate(labels, isMultiLabel, resultsField, tokenizationUpdate);
             return new ZeroShotClassificationConfigUpdate(labels, isMultiLabel, resultsField, tokenizationUpdate);
         }
         }
     }
     }
+
+    @Override
+    public Version getMinimalSupportedVersion() {
+        return Version.V_8_0_0;
+    }
 }
 }