diff --git a/muted-tests.yml b/muted-tests.yml index 0fc32d2718210..2fe5865d18fab 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -158,9 +158,6 @@ tests: - class: org.elasticsearch.xpack.ccr.FollowIndexSecurityIT method: testCleanShardFollowTaskAfterDeleteFollower issue: https://github.com/elastic/elasticsearch/issues/120339 -- class: org.elasticsearch.search.ccs.CrossClusterIT - method: testCancel - issue: https://github.com/elastic/elasticsearch/issues/108061 - class: org.elasticsearch.reservedstate.service.FileSettingsServiceTests method: testInvalidJSON issue: https://github.com/elastic/elasticsearch/issues/120482 diff --git a/server/src/internalClusterTest/java/org/elasticsearch/search/ccs/CrossClusterIT.java b/server/src/internalClusterTest/java/org/elasticsearch/search/ccs/CrossClusterIT.java index 21dca6a35659a..18538f7aebb1a 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/search/ccs/CrossClusterIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/search/ccs/CrossClusterIT.java @@ -240,8 +240,11 @@ public void testCancel() throws Exception { PlainActionFuture queryFuture = new PlainActionFuture<>(); SearchRequest searchRequest = new SearchRequest("demo", "cluster_a:prod"); searchRequest.allowPartialSearchResults(false); - searchRequest.setCcsMinimizeRoundtrips(randomBoolean()); + boolean minimizeRoundTrips = randomBoolean(); + searchRequest.setCcsMinimizeRoundtrips(minimizeRoundTrips); searchRequest.source(new SearchSourceBuilder().query(new MatchAllQueryBuilder()).size(1000)); + logger.info("Beginning search with mrt=" + minimizeRoundTrips); + client(LOCAL_CLUSTER).search(searchRequest, queryFuture); SearchListenerPlugin.waitSearchStarted(); // Get the search task and cancelled @@ -271,11 +274,15 @@ public void testCancel() throws Exception { }); for (TaskInfo taskInfo : remoteClusterSearchTasks.get()) { + logger.info("Checking for task's cancellation: " + taskInfo.taskId()); assertFalse("taskInfo is cancelled: " + taskInfo, taskInfo.cancelled()); } final CancelTasksRequest cancelRequest = new CancelTasksRequest().setTargetTaskId(rootTask.taskId()); - cancelRequest.setWaitForCompletion(randomBoolean()); + boolean waitForCompletion = randomBoolean(); + cancelRequest.setWaitForCompletion(waitForCompletion); + logger.info("Cancelling task with waitForCompletion=" + waitForCompletion); + final ActionFuture cancelFuture = client().admin().cluster().cancelTasks(cancelRequest); assertBusy(() -> { final Iterable transportServices = cluster("cluster_a").getInstances(TransportService.class); @@ -283,6 +290,7 @@ public void testCancel() throws Exception { Collection cancellableTasks = transportService.getTaskManager().getCancellableTasks().values(); for (CancellableTask cancellableTask : cancellableTasks) { if (cancellableTask.getAction().contains(TransportSearchAction.TYPE.name())) { + logger.info("Cancelled task: " + cancellableTask); assertTrue(cancellableTask.getDescription(), cancellableTask.isCancelled()); } } @@ -296,12 +304,15 @@ public void testCancel() throws Exception { .getTasks() .stream() .filter(t -> t.action().startsWith("indices:data/read/search")) - .collect(Collectors.toList()); + .toList(); + + logger.info("Remote search tasks after cancellation: " + remoteSearchTasksAfterCancellation.size()); for (TaskInfo taskInfo : remoteSearchTasksAfterCancellation) { assertTrue(taskInfo.description(), taskInfo.cancelled()); } SearchListenerPlugin.allowQueryPhase(); + logger.info("Query phase resumed: " + queryFuture.state()); try { queryFuture.get(); fail("query should have failed");