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

yiguolei 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 90dee2d123d [config](Nereids): add SessionVariable to control nereids 
timeout (#30048)
90dee2d123d is described below

commit 90dee2d123db81ef8b1addca59a5f9d18763274f
Author: jakevin <[email protected]>
AuthorDate: Wed Jan 17 17:12:04 2024 +0800

    [config](Nereids): add SessionVariable to control nereids timeout (#30048)
---
 .../doris/nereids/jobs/scheduler/SimpleJobScheduler.java     | 12 ++++++++----
 .../src/main/java/org/apache/doris/qe/SessionVariable.java   |  3 +++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java
index c52e2e90f13..ec751bdab2d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java
@@ -19,6 +19,7 @@ package org.apache.doris.nereids.jobs.scheduler;
 
 import org.apache.doris.nereids.CascadesContext;
 import org.apache.doris.nereids.jobs.Job;
+import org.apache.doris.qe.SessionVariable;
 
 import java.util.concurrent.TimeUnit;
 
@@ -29,11 +30,14 @@ public class SimpleJobScheduler implements JobScheduler {
     @Override
     public void executeJobPool(ScheduleContext scheduleContext) {
         JobPool pool = scheduleContext.getJobPool();
+        CascadesContext context = (CascadesContext) scheduleContext;
+        SessionVariable sessionVariable = 
context.getConnectContext().getSessionVariable();
         while (!pool.isEmpty()) {
-            CascadesContext context = (CascadesContext) scheduleContext;
-            if 
(context.getConnectContext().getSessionVariable().enableNereidsTimeout
-                    && 
context.getStatementContext().getStopwatch().elapsed(TimeUnit.MILLISECONDS) > 
5000) {
-                throw new RuntimeException("Nereids cost too much time ( > 5s 
)");
+            if (sessionVariable.enableNereidsTimeout
+                    && 
context.getStatementContext().getStopwatch().elapsed(TimeUnit.MILLISECONDS)
+                    > sessionVariable.nereidsTimeoutSecond * 1000L) {
+                throw new RuntimeException(
+                        "Nereids cost too much time ( > " + 
sessionVariable.nereidsTimeoutSecond + "s )");
             }
             Job job = pool.pop();
             job.execute();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index 6bf7de619db..7cfab79eb25 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -1155,6 +1155,9 @@ public class SessionVariable implements Serializable, 
Writable {
     @VariableMgr.VarAttr(name = ENABLE_NEREIDS_TIMEOUT, needForward = true)
     public boolean enableNereidsTimeout = true;
 
+    @VariableMgr.VarAttr(name = "nereids_timeout_second", needForward = true)
+    public int nereidsTimeoutSecond = 5;
+
     @VariableMgr.VarAttr(name = ENABLE_PUSH_DOWN_NO_GROUP_AGG)
     public boolean enablePushDownNoGroupAgg = true;
 


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

Reply via email to