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]