You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/04/30 12:41:33 UTC

[doris] 06/18: [fix](Jdbc Catalog) fix Druid Pool parameter and set `testWhileIdle = true` (#19049)

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

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 4013dd0b2f78ee44030ffd6cfdf4526b67c61e98
Author: Tiewei Fang <43...@users.noreply.github.com>
AuthorDate: Wed Apr 26 11:44:45 2023 +0800

    [fix](Jdbc Catalog) fix Druid Pool parameter and set `testWhileIdle  = true` (#19049)
    
    Set `testWhileIdle` for the druid pool to true
---
 conf/be.conf                                          |  4 ++--
 .../main/java/org/apache/doris/udf/JdbcExecutor.java  | 19 ++++++++++++++++---
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/conf/be.conf b/conf/be.conf
index d63b64bec1..e62925fc41 100644
--- a/conf/be.conf
+++ b/conf/be.conf
@@ -17,8 +17,8 @@
 
 PPROF_TMPDIR="$DORIS_HOME/log/"
 
-CUR_DATE = `date +%Y%m%d-%H%M%S`
-JAVA_OPTS="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDEL_TIME=600000"
+CUR_DATE=`date +%Y%m%d-%H%M%S`
+JAVA_OPTS="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDEL_TIME=300000"
 
 # since 1.2, the JAVA_HOME need to be set to run BE process.
 # JAVA_HOME=/path/to/jdk/
diff --git a/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java b/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java
index 49d0abcdbf..c8ba6ee1ad 100644
--- a/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java
+++ b/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java
@@ -87,7 +87,7 @@ public class JdbcExecutor {
         }
         minPoolSize = Integer.valueOf(System.getProperty("JDBC_MIN_POOL", "1"));
         maxPoolSize = Integer.valueOf(System.getProperty("JDBC_MAX_POOL", "100"));
-        maxIdelTime = Integer.valueOf(System.getProperty("JDBC_MAX_IDEL_TIME", "600000"));
+        maxIdelTime = Integer.valueOf(System.getProperty("JDBC_MAX_IDEL_TIME", "300000"));
         minIdleSize = minPoolSize > 0 ? 1 : 0;
         LOG.info("JdbcExecutor set minPoolSize = " + minPoolSize
                 + ", maxPoolSize = " + maxPoolSize
@@ -277,8 +277,11 @@ public class JdbcExecutor {
                 ds.setInitialSize(minPoolSize);
                 ds.setMaxActive(maxPoolSize);
                 ds.setMaxWait(5000);
-                ds.setTimeBetweenEvictionRunsMillis(maxIdelTime);
-                ds.setMinEvictableIdleTimeMillis(maxIdelTime / 2);
+                ds.setTestWhileIdle(true);
+                ds.setTestOnBorrow(false);
+                setValidationQuery(ds, tableType);
+                ds.setTimeBetweenEvictionRunsMillis(maxIdelTime / 5);
+                ds.setMinEvictableIdleTimeMillis(maxIdelTime);
                 druidDataSource = ds;
                 // here is a cache of datasource, which using the string(jdbcUrl + jdbcUser +
                 // jdbcPassword) as key.
@@ -309,6 +312,16 @@ public class JdbcExecutor {
         }
     }
 
+    private void setValidationQuery(DruidDataSource ds, TOdbcTableType tableType) {
+        if (tableType == TOdbcTableType.ORACLE) {
+            ds.setValidationQuery("SELECT 1 FROM dual");
+        } else if (tableType == TOdbcTableType.SAP_HANA) {
+            ds.setValidationQuery("SELECT 1 FROM DUMMY");
+        } else {
+            ds.setValidationQuery("SELECT 1");
+        }
+    }
+
     public void copyBatchBooleanResult(Object columnObj, boolean isNullable, int numRows, long nullMapAddr,
             long columnAddr) {
         Object[] column = (Object[]) columnObj;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org