This is an automated email from the ASF dual-hosted git repository.

lijibing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 464620431d6 Improve analyze timeout. (#33836)
464620431d6 is described below

commit 464620431d69e1959287469119e50752c16261eb
Author: Jibing-Li <[email protected]>
AuthorDate: Fri Apr 26 16:33:40 2024 +0800

    Improve analyze timeout. (#33836)
---
 .../src/main/java/org/apache/doris/statistics/AnalysisManager.java | 4 ++--
 .../java/org/apache/doris/statistics/ExternalAnalysisTask.java     | 3 +++
 .../main/java/org/apache/doris/statistics/JdbcAnalysisTask.java    | 3 +++
 .../main/java/org/apache/doris/statistics/OlapAnalysisTask.java    | 3 +++
 .../external_table_p2/hive/test_hive_statistic_timeout.groovy      | 7 ++++---
 5 files changed, 15 insertions(+), 5 deletions(-)

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 03314fe7748..b697c6f8327 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
@@ -867,7 +867,7 @@ public class AnalysisManager implements Writable {
                 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;
                         }
@@ -890,7 +890,7 @@ public class AnalysisManager implements Writable {
             }
             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 7d3c9af2548..d59133017ab 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 class ExternalAnalysisTask extends BaseAnalysisTask {
     }
 
     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 a318bd4594e..4562d4336e8 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 class JdbcAnalysisTask extends BaseAnalysisTask {
     }
 
     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 ce7982d4f1a..4b651d322ba 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
@@ -64,6 +64,9 @@ public class OlapAnalysisTask extends BaseAnalysisTask {
     }
 
     public void doExecute() throws Exception {
+        if (killed) {
+            return;
+        }
         // For empty table, write empty result directly, no need to run SQL to 
collect stats.
         if (info.rowCount == 0 && tableSample != null) {
             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 a3329f87712..a52a2304788 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"""
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to