You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2023/04/07 05:23:27 UTC

[iotdb] branch rel/1.1 updated: [IOTDB-5204 ] Add last task rather than first task to timeoutQueue

This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch rel/1.1
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.1 by this push:
     new f0376912b3 [IOTDB-5204 ] Add last task rather than first task to timeoutQueue
f0376912b3 is described below

commit f0376912b332f15baa8eb5fd0cbe71c54d46cc6d
Author: Liao Lanyu <14...@qq.com>
AuthorDate: Fri Apr 7 13:23:21 2023 +0800

    [IOTDB-5204 ] Add last task rather than first task to timeoutQueue
---
 .../iotdb/db/mpp/execution/schedule/DriverScheduler.java     |  8 ++------
 .../iotdb/db/mpp/execution/schedule/DriverSchedulerTest.java | 12 ++++++------
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java
index 6cd893f441..90bf9b2e98 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/DriverScheduler.java
@@ -216,6 +216,7 @@ public class DriverScheduler implements IDriverScheduler, IService {
     for (DriverTask task : submittedTasks) {
       registerTaskToQueryMap(queryId, task);
     }
+    timeoutQueue.push(submittedTasks.get(submittedTasks.size() - 1));
     for (DriverTask task : submittedTasks) {
       submitTaskToReadyQueue(task);
     }
@@ -225,12 +226,7 @@ public class DriverScheduler implements IDriverScheduler, IService {
     // If query has not been registered by other fragment instances,
     // add the first task as timeout checking task to timeoutQueue.
     queryMap
-        .computeIfAbsent(
-            queryId,
-            v -> {
-              timeoutQueue.push(driverTask);
-              return new ConcurrentHashMap<>();
-            })
+        .computeIfAbsent(queryId, k -> new ConcurrentHashMap<>())
         .computeIfAbsent(
             driverTask.getDriverTaskId().getFragmentInstanceId(),
             v -> Collections.synchronizedSet(new HashSet<>()))
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/execution/schedule/DriverSchedulerTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/execution/schedule/DriverSchedulerTest.java
index ff8d0fdebf..c3de94f4b1 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/execution/schedule/DriverSchedulerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/execution/schedule/DriverSchedulerTest.java
@@ -77,8 +77,8 @@ public class DriverSchedulerTest {
     Assert.assertEquals(2, manager.getQueryMap().get(queryId).size());
     Assert.assertEquals(1, manager.getTimeoutQueue().size());
     Assert.assertEquals(2, manager.getReadyQueue().size());
-    Assert.assertNotNull(manager.getTimeoutQueue().get(driverTaskId1));
-    Assert.assertNull(manager.getTimeoutQueue().get(driverTaskId2));
+    Assert.assertNull(manager.getTimeoutQueue().get(driverTaskId1));
+    Assert.assertNotNull(manager.getTimeoutQueue().get(driverTaskId2));
     DriverTask task1 =
         (DriverTask) manager.getQueryMap().get(queryId).get(instanceId1).toArray()[0];
     DriverTask task2 =
@@ -99,9 +99,9 @@ public class DriverSchedulerTest {
     Assert.assertEquals(1, manager.getQueryMap().size());
     Assert.assertTrue(manager.getQueryMap().containsKey(queryId));
     Assert.assertEquals(3, manager.getQueryMap().get(queryId).size());
-    Assert.assertEquals(1, manager.getTimeoutQueue().size());
+    Assert.assertEquals(2, manager.getTimeoutQueue().size());
     Assert.assertEquals(3, manager.getReadyQueue().size());
-    Assert.assertNull(manager.getTimeoutQueue().get(driverTaskId3));
+    Assert.assertNotNull(manager.getTimeoutQueue().get(driverTaskId3));
     DriverTask task3 =
         (DriverTask) manager.getQueryMap().get(queryId).get(instanceId3).toArray()[0];
     Assert.assertEquals(task3.getDriverTaskId(), driverTaskId3);
@@ -120,7 +120,7 @@ public class DriverSchedulerTest {
     Assert.assertEquals(2, manager.getQueryMap().size());
     Assert.assertTrue(manager.getQueryMap().containsKey(queryId2));
     Assert.assertEquals(1, manager.getQueryMap().get(queryId2).size());
-    Assert.assertEquals(2, manager.getTimeoutQueue().size());
+    Assert.assertEquals(3, manager.getTimeoutQueue().size());
     Assert.assertEquals(4, manager.getReadyQueue().size());
     DriverTask task4 = manager.getTimeoutQueue().get(driverTaskId4);
     Assert.assertNotNull(task4);
@@ -136,7 +136,7 @@ public class DriverSchedulerTest {
     Assert.assertTrue(manager.getBlockedTasks().isEmpty());
     Assert.assertEquals(2, manager.getQueryMap().size());
     Assert.assertTrue(manager.getQueryMap().containsKey(queryId));
-    Assert.assertEquals(1, manager.getTimeoutQueue().size());
+    Assert.assertEquals(3, manager.getTimeoutQueue().size());
     Assert.assertEquals(3, manager.getReadyQueue().size());
     Assert.assertEquals(DriverTaskStatus.ABORTED, task1.getStatus());
     Assert.assertEquals(DriverTaskStatus.READY, task2.getStatus());