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 5aaa80a37d [IOTDB-5431] Fix concurrent bug caused by using
synchronizedSet() in DriverScheduler
5aaa80a37d is described below
commit 5aaa80a37d32dc59eb17022d93cf314507fec444
Author: Jackie Tien <[email protected]>
AuthorDate: Sun Jan 29 11:22:08 2023 +0800
[IOTDB-5431] Fix concurrent bug caused by using synchronizedSet() in
DriverScheduler
---
.../db/mpp/execution/schedule/DriverScheduler.java | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 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 e9f097f7bf..ddcf072a1b 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
@@ -460,16 +460,18 @@ public class DriverScheduler implements IDriverScheduler,
IService {
if (queryRelatedTasks != null) {
for (Set<DriverTask> fragmentRelatedTasks :
queryRelatedTasks.values()) {
if (fragmentRelatedTasks != null) {
- for (DriverTask otherTask : fragmentRelatedTasks) {
- if (task.equals(otherTask)) {
- continue;
- }
- otherTask.lock();
- try {
-
otherTask.setAbortCause(DriverTaskAbortedException.BY_QUERY_CASCADING_ABORTED);
- clearDriverTask(otherTask);
- } finally {
- otherTask.unlock();
+ synchronized (fragmentRelatedTasks) {
+ for (DriverTask otherTask : fragmentRelatedTasks) {
+ if (task.equals(otherTask)) {
+ continue;
+ }
+ otherTask.lock();
+ try {
+
otherTask.setAbortCause(DriverTaskAbortedException.BY_QUERY_CASCADING_ABORTED);
+ clearDriverTask(otherTask);
+ } finally {
+ otherTask.unlock();
+ }
}
}
}