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());