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 c72a25feedfa88..c20657e8c68583 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 @@ -811,7 +811,7 @@ public void execute(ThreadPoolExecutor executor) { executor.submit(() -> { try { if (cancelled) { - errorMessages.add("Query timeout or user cancelled." + errorMessages.add("Query Timeout or user Cancelled." + "Could set analyze_timeout to a bigger value."); return; } @@ -834,7 +834,7 @@ public void execute(ThreadPoolExecutor executor) { } if (!colNames.isEmpty()) { if (cancelled) { - throw new RuntimeException("Cancelled"); + throw new RuntimeException("User Cancelled or Timeout."); } throw new RuntimeException("Failed to analyze following columns:[" + String.join(",", colNames) + "] Reasons: " + String.join(",", errorMessages)); diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/ExternalAnalysisTask.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/ExternalAnalysisTask.java index 287941be526635..c054c7bc5b075e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/ExternalAnalysisTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/ExternalAnalysisTask.java @@ -56,6 +56,9 @@ public ExternalAnalysisTask(AnalysisInfo info) { } public void doExecute() throws Exception { + if (killed) { + return; + } if (isTableLevelTask) { getTableStats(); } else { diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/JdbcAnalysisTask.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/JdbcAnalysisTask.java index a318bd4594e5f6..4562d4336e8aee 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/JdbcAnalysisTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/JdbcAnalysisTask.java @@ -60,6 +60,9 @@ public JdbcAnalysisTask(AnalysisInfo info) { } public void doExecute() throws Exception { + if (killed) { + return; + } if (isTableLevelTask) { getTableStats(); } else { diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java index 35ecdc29358658..dffba735fe9dec 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java @@ -65,6 +65,9 @@ public OlapAnalysisTask(AnalysisInfo info) { } public void doExecute() throws Exception { + if (killed) { + return; + } List> columnList = info.jobColumns; if (StatisticsUtil.isEmptyTable(tbl, info.analysisMethod) || columnList == null || columnList.isEmpty()) { StatsId statsId = new StatsId(concatColumnStatsId(), info.catalogId, info.dbId, diff --git a/regression-test/suites/external_table_p2/hive/test_hive_statistic_timeout.groovy b/regression-test/suites/external_table_p2/hive/test_hive_statistic_timeout.groovy index a3329f87712802..a52a230478851b 100644 --- a/regression-test/suites/external_table_p2/hive/test_hive_statistic_timeout.groovy +++ b/regression-test/suites/external_table_p2/hive/test_hive_statistic_timeout.groovy @@ -34,9 +34,10 @@ suite("test_hive_statistic_timeout", "p2,external,hive,external_remote,external_ sql """use ${catalog_name}.tpch_1000_parquet""" sql """set global analyze_timeout=1""" try { - sql """analyze table part (p_partkey, p_container, p_type, p_retailprice) with sync with full;""" - } catch (Exception e) { - assertTrue(e.getMessage().contains("Cancelled")); + test { + sql """analyze table part (p_partkey, p_container, p_type, p_retailprice) with sync with full;""" + exception "Timeout" + } } finally { sql """set global analyze_timeout=43200""" }