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