From 1339eef33cb6011dfba27a65d5d9dfd8da3863b4 Mon Sep 17 00:00:00 2001 From: ElvinWei Date: Mon, 19 Sep 2022 19:28:51 +0800 Subject: [PATCH] [fix](statistics) remove statistical task multiple times in one loop cycle (#12741) There is a problem with StatisticsTaskScheduler. The peek() method obtains a reference to the same task object, but the for-loop executes multiple removes. --- .../org/apache/doris/statistics/StatisticsTaskScheduler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java index d2ab65705c..b46a4106b8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsTaskScheduler.java @@ -68,7 +68,6 @@ public class StatisticsTaskScheduler extends MasterDaemon { Map>>> resultMap = Maps.newLinkedHashMap(); for (StatisticsTask task : tasks) { - queue.remove(); long jobId = task.getJobId(); if (checkJobIsValid(jobId)) { @@ -100,7 +99,7 @@ public class StatisticsTaskScheduler extends MasterDaemon { List tasks = Lists.newArrayList(); int i = Config.cbo_concurrency_statistics_task_num; while (i > 0) { - StatisticsTask task = queue.peek(); + StatisticsTask task = queue.poll(); if (task == null) { break; }