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 <43782773+bepppo...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org