This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 0ff645ddf0f [fix](Export) fix timeout property not work for export job
(#26032)
0ff645ddf0f is described below
commit 0ff645ddf0fec6e9897b0584e601340f9d4ed636
Author: Tiewei Fang <[email protected]>
AuthorDate: Tue Oct 31 15:43:22 2023 +0800
[fix](Export) fix timeout property not work for export job (#26032)
Refer: #25913
---
.../java/org/apache/doris/analysis/ExportStmt.java | 26 +++++++++++++++++-----
.../main/java/org/apache/doris/load/ExportJob.java | 3 ++-
.../main/java/org/apache/doris/qe/VariableMgr.java | 4 ++++
3 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
index ee4377ee246..dd406f86617 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
@@ -47,6 +47,7 @@ import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
// EXPORT statement, export data to dirs by broker.
@@ -65,6 +66,7 @@ public class ExportStmt extends StatementBase {
private static final String DEFAULT_LINE_DELIMITER = "\n";
private static final String DEFAULT_COLUMNS = "";
private static final String DEFAULT_PARALLELISM = "1";
+ private static final Integer DEFAULT_TIMEOUT = 7200;
private static final ImmutableSet<String> PROPERTIES_SET = new
ImmutableSet.Builder<String>()
.add(LABEL)
@@ -72,7 +74,6 @@ public class ExportStmt extends StatementBase {
.add(LoadStmt.EXEC_MEM_LIMIT)
.add(LoadStmt.TIMEOUT_PROPERTY)
.add(LoadStmt.KEY_IN_PARAM_COLUMNS)
- .add(LoadStmt.TIMEOUT_PROPERTY)
.add(OutFileClause.PROP_MAX_FILE_SIZE)
.add(OutFileClause.PROP_DELETE_EXISTING_FILES)
.add(PropertyAnalyzer.PROPERTIES_COLUMN_SEPARATOR)
@@ -98,6 +99,8 @@ public class ExportStmt extends StatementBase {
private Integer parallelism;
+ private Integer timeout;
+
private String maxFileSize;
private String deleteExistingFiles;
private SessionVariable sessionVariables;
@@ -117,12 +120,10 @@ public class ExportStmt extends StatementBase {
this.brokerDesc = brokerDesc;
this.columnSeparator = DEFAULT_COLUMN_SEPARATOR;
this.lineDelimiter = DEFAULT_LINE_DELIMITER;
+ this.timeout = DEFAULT_TIMEOUT;
this.columns = DEFAULT_COLUMNS;
- if (ConnectContext.get() != null) {
- this.sessionVariables = ConnectContext.get().getSessionVariable();
- } else {
- this.sessionVariables = VariableMgr.getDefaultSessionVariable();
- }
+ this.sessionVariables =
VariableMgr.cloneSessionVariable(Optional.ofNullable(
+
ConnectContext.get().getSessionVariable()).orElse(VariableMgr.getDefaultSessionVariable()));
}
public String getColumns() {
@@ -356,6 +357,15 @@ public class ExportStmt extends StatementBase {
this.maxFileSize =
properties.getOrDefault(OutFileClause.PROP_MAX_FILE_SIZE, "");
this.deleteExistingFiles =
properties.getOrDefault(OutFileClause.PROP_DELETE_EXISTING_FILES, "");
+ // timeout
+ String timeoutString =
properties.getOrDefault(LoadStmt.TIMEOUT_PROPERTY,
+ String.valueOf(DEFAULT_TIMEOUT));
+ try {
+ this.timeout = Integer.parseInt(timeoutString);
+ } catch (NumberFormatException e) {
+ throw new UserException("The value of timeout is invalid!");
+ }
+
if (properties.containsKey(LABEL)) {
FeNameFormat.checkLabel(properties.get(LABEL));
} else {
@@ -422,4 +432,8 @@ public class ExportStmt extends StatementBase {
public Integer getParallelNum() {
return parallelism;
}
+
+ public Integer getTimeout() {
+ return timeout;
+ }
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java
b/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java
index 1527ba1ce4c..66b0ea919d0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java
@@ -230,7 +230,8 @@ public class ExportJob implements Writable {
this.parallelNum = stmt.getParallelNum();
this.exportPath = path;
this.sessionVariables = stmt.getSessionVariables();
- this.timeoutSecond = sessionVariables.getQueryTimeoutS();
+ this.timeoutSecond = stmt.getTimeout();
+ this.sessionVariables.setQueryTimeoutS(this.timeoutSecond);
this.qualifiedUser = stmt.getQualifiedUser();
this.userIdentity = stmt.getUserIdentity();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java
index 3588692dd2f..80cf288a32a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java
@@ -252,6 +252,10 @@ public class VariableMgr {
}
}
+ public static SessionVariable cloneSessionVariable(SessionVariable var) {
+ return SerializationUtils.clone(var);
+ }
+
// Check if this setVar can be set correctly
// Do not use ErrorReport.reportDdlException to throw exeception, it will
set the query state in connection context.
// But in some case, we do not want to set the query state and need to
ignore that error.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]