diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java index a7eed48c4692fb..91f54208f6acd0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java @@ -92,7 +92,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -677,7 +677,7 @@ private ThreadPoolExecutor createThreadPoolForSyncAnalyze() { return new ThreadPoolExecutor(0, ConnectContext.get().getSessionVariable().parallelSyncAnalyzeTaskNum, 0, TimeUnit.SECONDS, - new SynchronousQueue(), + new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setDaemon(true).setNameFormat("SYNC ANALYZE" + "-%d") .build(), new BlockedPolicy(poolName, StatisticsUtil.getAnalyzeTimeout())); @@ -831,6 +831,9 @@ public void execute(ThreadPoolExecutor executor) { LOG.warn("Thread got interrupted when waiting sync analyze task execution finished", t); } if (!colNames.isEmpty()) { + if (cancelled) { + throw new RuntimeException("Cancelled"); + } throw new RuntimeException("Failed to analyze following columns:[" + String.join(",", colNames) + "] Reasons: " + String.join(",", errorMessages)); }