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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2b55fe634 [LINKIS-5147][EC-JDBC] Add timeout configurations of 
datasource for jdbc engine (#5148)
2b55fe634 is described below

commit 2b55fe634d34e4def47c6474e977ab23f6740a46
Author: Zhen Wang <[email protected]>
AuthorDate: Tue Jul 16 14:30:29 2024 +0800

    [LINKIS-5147][EC-JDBC] Add timeout configurations of datasource for jdbc 
engine (#5148)
    
    * [LINKIS-5147] Add timeout configurations of datasource for jdbc engine
    
    * fix style
---
 .../manager/engineplugin/jdbc/ConnectionManager.java   | 18 ++++++++++++++++++
 .../jdbc/constant/JDBCEngineConnConstant.java          |  5 +++++
 .../jdbc/executor/JDBCEngineConnExecutor.scala         |  4 +++-
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git 
a/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/ConnectionManager.java
 
b/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/ConnectionManager.java
index 38299081d..f7598d113 100644
--- 
a/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/ConnectionManager.java
+++ 
b/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/ConnectionManager.java
@@ -19,6 +19,7 @@ package org.apache.linkis.manager.engineplugin.jdbc;
 
 import org.apache.linkis.common.utils.SecurityUtils;
 import org.apache.linkis.hadoop.common.utils.KerberosUtils;
+import org.apache.linkis.manager.engineplugin.jdbc.conf.JDBCConfiguration$;
 import 
org.apache.linkis.manager.engineplugin.jdbc.constant.JDBCEngineConnConstant;
 import 
org.apache.linkis.manager.engineplugin.jdbc.exception.JDBCParamsIllegalException;
 import org.apache.linkis.manager.engineplugin.jdbc.utils.JdbcParamUtils;
@@ -187,6 +188,14 @@ public class ConnectionManager {
         JDBCPropertiesParser.getInt(
             properties, 
JDBCEngineConnConstant.JDBC_POOL_REMOVE_ABANDONED_TIMEOUT, 300);
 
+    int connectionTimeout =
+        JDBCPropertiesParser.getInt(properties, 
JDBCEngineConnConstant.JDBC_CONNECTION_TIMEOUT, 0);
+    int socketTimeout =
+        JDBCPropertiesParser.getInt(properties, 
JDBCEngineConnConstant.JDBC_SOCKET_TIMEOUT, 0);
+    int queryTimeout =
+        JDBCPropertiesParser.getInt(
+            properties, JDBCConfiguration$.MODULE$.JDBC_QUERY_TIMEOUT().key(), 
0);
+
     DruidDataSource datasource = new DruidDataSource();
     LOG.info("Database connection address information(数据库连接地址信息)=" + dbUrl);
     datasource.setUrl(dbUrl);
@@ -207,6 +216,15 @@ public class ConnectionManager {
     datasource.setPoolPreparedStatements(poolPreparedStatements);
     datasource.setRemoveAbandoned(removeAbandoned);
     datasource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
+    if (connectionTimeout > 0) {
+      datasource.setConnectTimeout(connectionTimeout);
+    }
+    if (socketTimeout > 0) {
+      datasource.setSocketTimeout(socketTimeout);
+    }
+    if (queryTimeout > 0) {
+      datasource.setQueryTimeout(queryTimeout);
+    }
     return datasource;
   }
 
diff --git 
a/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/constant/JDBCEngineConnConstant.java
 
b/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/constant/JDBCEngineConnConstant.java
index 9e19ea9f5..16f6a7e32 100644
--- 
a/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/constant/JDBCEngineConnConstant.java
+++ 
b/linkis-engineconn-plugins/jdbc/src/main/java/org/apache/linkis/manager/engineplugin/jdbc/constant/JDBCEngineConnConstant.java
@@ -34,6 +34,11 @@ public class JDBCEngineConnConstant {
       "wds.linkis.jdbc.auth.kerberos.proxy.enable";
   public static final String JDBC_PROXY_USER_PROPERTY = 
"wds.linkis.jdbc.proxy.user.property";
   public static final String JDBC_PROXY_USER = "wds.linkis.jdbc.proxy.user";
+
+  public static final String JDBC_CONNECTION_TIMEOUT = 
"wds.linkis.jdbc.connection.timeout";
+
+  public static final String JDBC_SOCKET_TIMEOUT = 
"wds.linkis.jdbc.socket.timeout";
+
   public static final String JDBC_SCRIPTS_EXEC_USER = "execUser";
   public static final String JDBC_ENGINE_RUN_TIME_DS = 
"wds.linkis.engine.runtime.datasource";
   public static final String JDBC_ENGINE_RUN_TIME_DS_MAX_VERSION_ID =
diff --git 
a/linkis-engineconn-plugins/jdbc/src/main/scala/org/apache/linkis/manager/engineplugin/jdbc/executor/JDBCEngineConnExecutor.scala
 
b/linkis-engineconn-plugins/jdbc/src/main/scala/org/apache/linkis/manager/engineplugin/jdbc/executor/JDBCEngineConnExecutor.scala
index 8a2d64fa7..240fed100 100644
--- 
a/linkis-engineconn-plugins/jdbc/src/main/scala/org/apache/linkis/manager/engineplugin/jdbc/executor/JDBCEngineConnExecutor.scala
+++ 
b/linkis-engineconn-plugins/jdbc/src/main/scala/org/apache/linkis/manager/engineplugin/jdbc/executor/JDBCEngineConnExecutor.scala
@@ -146,7 +146,9 @@ class JDBCEngineConnExecutor(override val outputPrintLimit: 
Int, val id: Int)
 
     try {
       statement = connection.createStatement()
-      statement.setQueryTimeout(JDBCConfiguration.JDBC_QUERY_TIMEOUT.getValue)
+      if (statement.getQueryTimeout == 0) {
+        
statement.setQueryTimeout(JDBCConfiguration.JDBC_QUERY_TIMEOUT.getValue)
+      }
       statement.setFetchSize(outputPrintLimit)
       statement.setMaxRows(outputPrintLimit)
 


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

Reply via email to