diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java index da9177f624b4d..b800206216d07 100644 --- a/server/src/main/java/org/elasticsearch/TransportVersions.java +++ b/server/src/main/java/org/elasticsearch/TransportVersions.java @@ -173,6 +173,7 @@ static TransportVersion def(int id) { public static final TransportVersion INTRODUCE_FAILURES_DEFAULT_RETENTION_BACKPORT_8_19 = def(8_841_0_26); public static final TransportVersion RESCORE_VECTOR_ALLOW_ZERO_BACKPORT_8_19 = def(8_841_0_27); public static final TransportVersion INFERENCE_ADD_TIMEOUT_PUT_ENDPOINT_8_19 = def(8_841_0_28); + public static final TransportVersion ESQL_REPORT_SHARD_PARTITIONING_8_19 = def(8_841_0_29); public static final TransportVersion V_9_0_0 = def(9_000_0_09); public static final TransportVersion INITIAL_ELASTICSEARCH_9_0_1 = def(9_000_0_10); public static final TransportVersion INITIAL_ELASTICSEARCH_9_0_2 = def(9_000_0_11); diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java index 9d670854a3045..b5b325e11094b 100644 --- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java +++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneOperator.java @@ -45,6 +45,7 @@ import java.util.stream.Collectors; import static org.elasticsearch.TransportVersions.ESQL_REPORT_SHARD_PARTITIONING; +import static org.elasticsearch.TransportVersions.ESQL_REPORT_SHARD_PARTITIONING_8_19; public abstract class LuceneOperator extends SourceOperator { private static final Logger logger = LogManager.getLogger(LuceneOperator.class); @@ -352,7 +353,7 @@ private Status(LuceneOperator operator) { } else { rowsEmitted = 0; } - partitioningStrategies = in.getTransportVersion().onOrAfter(ESQL_REPORT_SHARD_PARTITIONING) + partitioningStrategies = serializeShardPartitioning(in.getTransportVersion()) ? in.readMap(LuceneSliceQueue.PartitioningStrategy::readFrom) : Map.of(); } @@ -376,11 +377,15 @@ public void writeTo(StreamOutput out) throws IOException { if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_PROFILE_ROWS_PROCESSED)) { out.writeVLong(rowsEmitted); } - if (out.getTransportVersion().onOrAfter(ESQL_REPORT_SHARD_PARTITIONING)) { + if (serializeShardPartitioning(out.getTransportVersion())) { out.writeMap(partitioningStrategies, StreamOutput::writeString, StreamOutput::writeWriteable); } } + private static boolean serializeShardPartitioning(TransportVersion version) { + return version.onOrAfter(ESQL_REPORT_SHARD_PARTITIONING) || version.isPatchFrom(ESQL_REPORT_SHARD_PARTITIONING_8_19); + } + @Override public String getWriteableName() { return ENTRY.name;