From 0bd3f665fcd394083a222ecd61c0d96ceaf64526 Mon Sep 17 00:00:00 2001 From: Ignacio Vera Date: Mon, 17 Mar 2025 10:21:47 +0100 Subject: [PATCH 1/3] Don't generate stacktrace in TaskCancelledException --- .../java/org/elasticsearch/tasks/TaskCancelledException.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/src/main/java/org/elasticsearch/tasks/TaskCancelledException.java b/server/src/main/java/org/elasticsearch/tasks/TaskCancelledException.java index 81c7bec678b3a..4a56e96aa3f30 100644 --- a/server/src/main/java/org/elasticsearch/tasks/TaskCancelledException.java +++ b/server/src/main/java/org/elasticsearch/tasks/TaskCancelledException.java @@ -27,6 +27,11 @@ public TaskCancelledException(StreamInput in) throws IOException { super(in); } + @Override + public Throwable fillInStackTrace() { + return this; // this exception doesn't imply a bug, no need for a stack trace + } + @Override public RestStatus status() { // Tasks are typically cancelled at the request of the client, so a 4xx status code is more accurate than the default of 500 (and From cfb967861534ee0cf49470134e1467fcda9e7c1c Mon Sep 17 00:00:00 2001 From: Ignacio Vera Date: Mon, 17 Mar 2025 13:24:50 +0100 Subject: [PATCH 2/3] Update docs/changelog/125002.yaml --- docs/changelog/125002.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/changelog/125002.yaml diff --git a/docs/changelog/125002.yaml b/docs/changelog/125002.yaml new file mode 100644 index 0000000000000..6b811cc80f51e --- /dev/null +++ b/docs/changelog/125002.yaml @@ -0,0 +1,5 @@ +pr: 125002 +summary: Don't generate stacktrace in `TaskCancelledException` +area: Search +type: bug +issues: [] From 49db0313905aed02af3c27b14c0821762a81a181 Mon Sep 17 00:00:00 2001 From: Ignacio Vera Date: Mon, 17 Mar 2025 14:46:47 +0100 Subject: [PATCH 3/3] fix test --- .../aggregations/bucket/SearchCancellationIT.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/aggregations/src/internalClusterTest/java/org/elasticsearch/aggregations/bucket/SearchCancellationIT.java b/modules/aggregations/src/internalClusterTest/java/org/elasticsearch/aggregations/bucket/SearchCancellationIT.java index d225ccc9d173f..a1119c64c577d 100644 --- a/modules/aggregations/src/internalClusterTest/java/org/elasticsearch/aggregations/bucket/SearchCancellationIT.java +++ b/modules/aggregations/src/internalClusterTest/java/org/elasticsearch/aggregations/bucket/SearchCancellationIT.java @@ -43,6 +43,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.not; public class SearchCancellationIT extends AbstractSearchCancellationTestCase { @@ -97,9 +98,7 @@ public void testCancellationDuringTimeSeriesAggregation() throws Exception { } logger.info("Executing search"); - // we have to explicitly set error_trace=true for the later exception check for `TimeSeriesIndexSearcher` Client client = client(); - client.threadPool().getThreadContext().putHeader("error_trace", "true"); TimeSeriesAggregationBuilder timeSeriesAggregationBuilder = new TimeSeriesAggregationBuilder("test_agg"); ActionFuture searchResponse = client.prepareSearch("test") .setQuery(matchAllQuery()) @@ -129,7 +128,9 @@ public void testCancellationDuringTimeSeriesAggregation() throws Exception { logger.info("All shards failed with", ex); if (lowLevelCancellation) { // Ensure that we cancelled in TimeSeriesIndexSearcher and not in reduce phase - assertThat(ExceptionsHelper.stackTrace(ex), containsString("TimeSeriesIndexSearcher")); + assertThat(ExceptionsHelper.stackTrace(ex), not(containsString("not building sub-aggregations due to task cancellation"))); + } else { + assertThat(ExceptionsHelper.stackTrace(ex), containsString("not building sub-aggregations due to task cancellation")); } } }