diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java index e8c98322221c9..c97bd84a101cd 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java @@ -76,6 +76,7 @@ public class EsqlExecutionInfo implements ChunkedToXContentObject, Writeable { private final transient Long relativeStartNanos; // start time for an ESQL query for calculating took times private transient TimeValue planningTookTime; // time elapsed since start of query to calling ComputeService.execute private volatile boolean isPartial; // Does this request have partial results? + private transient volatile boolean isStopped; // Have we received stop command? public EsqlExecutionInfo(boolean includeCCSMetadata) { this(Predicates.always(), includeCCSMetadata); // default all clusters to skip_unavailable=true @@ -311,6 +312,14 @@ public void markAsPartial() { isPartial = true; } + public void markAsStopped() { + isStopped = true; + } + + public boolean isStopped() { + return isStopped; + } + /** * Mark this cluster as having partial results. */ diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeService.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeService.java index 4279d0114130d..ad93025bd4f2f 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeService.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeService.java @@ -251,7 +251,7 @@ public void execute( exchangeSource, cancelQueryOnFailure, localListener.acquireCompute().map(r -> { - localClusterWasInterrupted.set(execInfo.isPartial()); + localClusterWasInterrupted.set(execInfo.isStopped()); if (execInfo.isCrossClusterSearch() && execInfo.clusterAliases().contains(LOCAL_CLUSTER)) { execInfo.swapCluster( LOCAL_CLUSTER, @@ -292,7 +292,7 @@ public void execute( private void updateExecutionInfo(EsqlExecutionInfo executionInfo, String clusterAlias, ComputeResponse resp) { Function runningToSuccess = status -> { if (status == EsqlExecutionInfo.Cluster.Status.RUNNING) { - return executionInfo.isPartial() ? EsqlExecutionInfo.Cluster.Status.PARTIAL : EsqlExecutionInfo.Cluster.Status.SUCCESSFUL; + return executionInfo.isStopped() ? EsqlExecutionInfo.Cluster.Status.PARTIAL : EsqlExecutionInfo.Cluster.Status.SUCCESSFUL; } else { return status; } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/TransportEsqlAsyncStopAction.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/TransportEsqlAsyncStopAction.java index f5f51029ae8a6..a1a3072c69b8c 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/TransportEsqlAsyncStopAction.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/TransportEsqlAsyncStopAction.java @@ -118,7 +118,7 @@ private void stopQueryAndReturnResult(Task task, AsyncExecutionId asyncId, Actio logger.debug("Async stop for task {} - stopping", asyncIdStr); final EsqlExecutionInfo esqlExecutionInfo = asyncTask.executionInfo(); if (esqlExecutionInfo != null) { - esqlExecutionInfo.markAsPartial(); + esqlExecutionInfo.markAsStopped(); } Runnable getResults = () -> getResultsAction.execute(task, getAsyncResultRequest, listener); exchangeService.finishSessionEarly(sessionID(asyncId), ActionListener.running(() -> {