浏览代码

[TEST] wait for search task to be cancelled in SearchRestCancellationIT (#45978)

SearchRestCancellationIT aborts an http request, and then checks that
the corresponding search task has been cancelled on the server-side.
There are no guarantees that the task has already been marked cancelled
after the `cancel` calls returns, and there is no easy wait for that.

This commit introduces an assertBusy to try and wait for the search task
to be marked cancelled.

Closes #45911
Luca Cavanna 6 年之前
父节点
当前提交
3eae13fb1c

+ 7 - 5
qa/smoke-test-http/src/test/java/org/elasticsearch/http/SearchRestCancellationIT.java

@@ -154,7 +154,7 @@ public class SearchRestCancellationIT extends HttpSmokeTestCase {
         return nodeIdToName;
     }
 
-    private static void ensureSearchTaskIsCancelled(Function<String, String> nodeIdToName) {
+    private static void ensureSearchTaskIsCancelled(Function<String, String> nodeIdToName) throws Exception {
         SetOnce<TaskInfo> searchTask = new SetOnce<>();
         ListTasksResponse listTasksResponse = client().admin().cluster().prepareListTasks().get();
         for (TaskInfo task : listTasksResponse.getTasks()) {
@@ -165,10 +165,12 @@ public class SearchRestCancellationIT extends HttpSmokeTestCase {
         assertNotNull(searchTask.get());
         TaskId taskId = searchTask.get().getTaskId();
         String nodeName = nodeIdToName.apply(taskId.getNodeId());
-        TaskManager taskManager = internalCluster().getInstance(TransportService.class, nodeName).getTaskManager();
-        Task task = taskManager.getTask(taskId.getId());
-        assertThat(task, instanceOf(CancellableTask.class));
-        assertTrue(((CancellableTask)task).isCancelled());
+        assertBusy(() -> {
+            TaskManager taskManager = internalCluster().getInstance(TransportService.class, nodeName).getTaskManager();
+            Task task = taskManager.getTask(taskId.getId());
+            assertThat(task, instanceOf(CancellableTask.class));
+            assertTrue(((CancellableTask)task).isCancelled());
+        });
     }
 
     private static void indexTestData() {