This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 0a7d2b73d8b [IOTDB-5832] Fix Bug: The size of readyQueue is negative
incorrectly
0a7d2b73d8b is described below
commit 0a7d2b73d8beaa2723c82b3352af666561b6c1e8
Author: Xiangwei Wei <[email protected]>
AuthorDate: Fri Apr 28 17:25:00 2023 +0800
[IOTDB-5832] Fix Bug: The size of readyQueue is negative incorrectly
---
.../iotdb/db/mpp/execution/schedule/queue/IndexedBlockingQueue.java | 1 +
.../schedule/queue/multilevelqueue/MultilevelPriorityQueue.java | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/IndexedBlockingQueue.java
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/IndexedBlockingQueue.java
index 6fdcbb03920..d219571b44c 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/IndexedBlockingQueue.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/IndexedBlockingQueue.java
@@ -104,6 +104,7 @@ public abstract class IndexedBlockingQueue<E extends
IDIndexedAccessible> {
return null;
}
size--;
+ Preconditions.checkState(size >= 0, "The size of readyQueue cannot be
negative.");
return output;
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
index 2c5bc41fa17..529dd95cfb5 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
@@ -157,10 +157,10 @@ public class MultilevelPriorityQueue extends
IndexedBlockingReserveQueue<DriverT
checkArgument(driverTask != null, "driverTask is null");
for (PriorityQueue<DriverTask> level : levelWaitingSplits) {
if (level.remove(driverTask)) {
- break;
+ return driverTask;
}
}
- return driverTask;
+ return null;
}
@Override