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
commit 3c8f2aded9a0363cf80e39053e417129b4ed0690 Author: peacewong <[email protected]> AuthorDate: Tue Mar 19 21:59:42 2024 +0800 add connection pool keepalive feature --- .../java/org/apache/linkis/mybatis/DataSourceUtils.java | 16 ++++++++++++++++ .../apache/linkis/mybatis/conf/MybatisConfiguration.java | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceUtils.java b/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceUtils.java index 8def4f6a10..6c0a4508bc 100644 --- a/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceUtils.java +++ b/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/DataSourceUtils.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,6 +72,11 @@ public class DataSourceUtils { MybatisConfiguration.MYBATIS_DATASOURCE_REMOVE_ABANDONED_ENABLED.getValue(); int removeAbandonedTimeout = MybatisConfiguration.MYBATIS_DATASOURCE_REMOVE_ABANDONED_TIMEOUT.getValue(); + + boolean jdbcKeepAlive = MybatisConfiguration.MYBATIS_DATASOURCE_KEEPALIVE_ENABLED.getValue(); + + boolean jdbcUsePingMethod = MybatisConfiguration.MYBATIS_DATASOURCE_USE_PING_ENABLED.getValue(); + DruidDataSource datasource = new DruidDataSource(); logger.info("Database connection address information(数据库连接地址信息)=" + dbUrl); datasource.setUrl(dbUrl); @@ -87,6 +93,16 @@ public class DataSourceUtils { datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); + + datasource.setKeepAlive(jdbcKeepAlive); + + if (!jdbcUsePingMethod) { + // use test sql for keepalive + MySqlValidConnectionChecker checker = new MySqlValidConnectionChecker(); + checker.setUsePingMethod(false); + datasource.setValidConnectionChecker(checker); + } + datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setRemoveAbandoned(removeAbandoned); datasource.setRemoveAbandonedTimeout(removeAbandonedTimeout); diff --git a/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java b/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java index e127b9fd97..d200ab2e09 100644 --- a/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java +++ b/linkis-commons/linkis-mybatis/src/main/java/org/apache/linkis/mybatis/conf/MybatisConfiguration.java @@ -63,6 +63,11 @@ public class MybatisConfiguration { CommonVars.apply("wds.linkis.server.mybatis.datasource.poolPreparedStatements", Boolean.TRUE); public static final CommonVars<Boolean> MYBATIS_DATASOURCE_REMOVE_ABANDONED_ENABLED = CommonVars.apply("wds.linkis.server.mybatis.remove.abandoned.enabled", Boolean.TRUE); + public static final CommonVars<Boolean> MYBATIS_DATASOURCE_KEEPALIVE_ENABLED = + CommonVars.apply("linkis.server.mybatis.keepalive.enabled", Boolean.TRUE); + public static final CommonVars<Boolean> MYBATIS_DATASOURCE_USE_PING_ENABLED = + CommonVars.apply("linkis.server.mybatis.use.ping.enabled", Boolean.TRUE); + public static final CommonVars<Integer> MYBATIS_DATASOURCE_REMOVE_ABANDONED_TIMEOUT = CommonVars.apply("wds.linkis.server.mybatis.remove.abandoned.timeout", 300); public static final CommonVars<String> BDP_SERVER_MYBATIS_PAGEHELPER_DIALECT = --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
