Răsfoiți Sursa

Fix missing BwC in QuerySearchResult (#126636)

Forgot to update for 8.19.x changes after backporting.

closes #126633
closes #126632
Armin Braun 6 luni în urmă
părinte
comite
788cd26a0f

+ 0 - 6
muted-tests.yml

@@ -423,12 +423,6 @@ tests:
 - class: org.elasticsearch.index.shard.IndexShardTests
   method: testReentrantEngineReadLockAcquisitionInRefreshListener
   issue: https://github.com/elastic/elasticsearch/issues/126628
-- class: org.elasticsearch.upgrades.SearchStatesIT
-  method: testBWCSearchStates
-  issue: https://github.com/elastic/elasticsearch/issues/126632
-- class: org.elasticsearch.upgrades.SearchStatesIT
-  method: testCanMatch
-  issue: https://github.com/elastic/elasticsearch/issues/126633
 - class: org.elasticsearch.xpack.esql.action.EsqlActionIT
   method: testQueryOnEmptyDataIndex
   issue: https://github.com/elastic/elasticsearch/issues/126580

+ 1 - 0
server/src/main/java/org/elasticsearch/TransportVersions.java

@@ -158,6 +158,7 @@ public class TransportVersions {
     public static final TransportVersion RERANK_COMMON_OPTIONS_ADDED_8_19 = def(8_841_0_15);
     public static final TransportVersion REMOTE_EXCEPTION_8_19 = def(8_841_0_16);
     public static final TransportVersion AMAZON_BEDROCK_TASK_SETTINGS_8_19 = def(8_841_0_17);
+    public static final TransportVersion BATCHED_QUERY_PHASE_VERSION_BACKPORT_8_X = def(8_841_0_19);
     public static final TransportVersion INITIAL_ELASTICSEARCH_9_0 = def(9_000_0_00);
     public static final TransportVersion REMOVE_SNAPSHOT_FAILURES_90 = def(9_000_0_01);
     public static final TransportVersion TRANSPORT_STATS_HANDLING_TIME_REQUIRED_90 = def(9_000_0_02);

+ 12 - 6
server/src/main/java/org/elasticsearch/search/query/QuerySearchResult.java

@@ -11,6 +11,7 @@ package org.elasticsearch.search.query;
 
 import org.apache.lucene.search.FieldDoc;
 import org.apache.lucene.search.TotalHits;
+import org.elasticsearch.TransportVersion;
 import org.elasticsearch.TransportVersions;
 import org.elasticsearch.common.io.stream.DelayableWriteable;
 import org.elasticsearch.common.io.stream.StreamInput;
@@ -92,7 +93,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
     public QuerySearchResult(StreamInput in, boolean delayedAggregations) throws IOException {
         isNull = in.readBoolean();
         if (isNull == false) {
-            ShardSearchContextId id = in.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)
+            ShardSearchContextId id = versionSupportsBatchedExecution(in.getTransportVersion())
                 ? in.readOptionalWriteable(ShardSearchContextId::new)
                 : new ShardSearchContextId(in);
             readFromWithId(id, in, delayedAggregations);
@@ -410,7 +411,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
                 sortValueFormats[i] = in.readNamedWriteable(DocValueFormat.class);
             }
         }
-        if (in.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
+        if (versionSupportsBatchedExecution(in.getTransportVersion())) {
             if (in.readBoolean()) {
                 setTopDocs(readTopDocs(in));
             }
@@ -440,7 +441,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
             setRescoreDocIds(new RescoreDocIds(in));
             if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
                 rankShardResult = in.readOptionalNamedWriteable(RankShardResult.class);
-                if (in.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
+                if (versionSupportsBatchedExecution(in.getTransportVersion())) {
                     reduced = in.readBoolean();
                 }
             }
@@ -461,7 +462,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
         }
         out.writeBoolean(isNull);
         if (isNull == false) {
-            if (out.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
+            if (versionSupportsBatchedExecution(out.getTransportVersion())) {
                 out.writeOptionalWriteable(contextId);
             } else {
                 contextId.writeTo(out);
@@ -481,7 +482,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
                 out.writeNamedWriteable(sortValueFormats[i]);
             }
         }
-        if (out.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
+        if (versionSupportsBatchedExecution(out.getTransportVersion())) {
             if (topDocsAndMaxScore != null) {
                 out.writeBoolean(true);
                 writeTopDocs(out, topDocsAndMaxScore);
@@ -511,7 +512,7 @@ public final class QuerySearchResult extends SearchPhaseResult {
         } else if (rankShardResult != null) {
             throw new IllegalArgumentException("cannot serialize [rank] to version [" + out.getTransportVersion().toReleaseVersion() + "]");
         }
-        if (out.getTransportVersion().onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)) {
+        if (versionSupportsBatchedExecution(out.getTransportVersion())) {
             out.writeBoolean(reduced);
         }
     }
@@ -561,4 +562,9 @@ public final class QuerySearchResult extends SearchPhaseResult {
         }
         return super.hasReferences();
     }
+
+    private static boolean versionSupportsBatchedExecution(TransportVersion transportVersion) {
+        return transportVersion.onOrAfter(TransportVersions.BATCHED_QUERY_PHASE_VERSION)
+            || transportVersion.isPatchFrom(TransportVersions.BATCHED_QUERY_PHASE_VERSION_BACKPORT_8_X);
+    }
 }