From 52dad197127dc7dc6e5800807c2e8c1450b232c1 Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Thu, 22 Aug 2024 00:04:33 +0800 Subject: [PATCH] [fix](jdbc catalog) Fix HikariDataSource Resource Leak in JdbcExecutor --- .../main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java | 3 ++- .../src/main/java/org/apache/doris/jdbc/JdbcDataSource.java | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java index eea57efbf14981..3e681fa1519166 100644 --- a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java +++ b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java @@ -94,6 +94,7 @@ public BaseJdbcExecutor(byte[] thriftParams) throws Exception { .setConnectionPoolMaxLifeTime(request.connection_pool_max_life_time) .setConnectionPoolKeepAlive(request.connection_pool_keep_alive); JdbcDataSource.getDataSource().setCleanupInterval(request.connection_pool_cache_clear_time); + System.setProperty("com.zaxxer.hikari.useWeakReferences", "true"); init(config, request.statement); this.jdbcDriverVersion = getJdbcDriverVersion(); } @@ -309,7 +310,7 @@ private void init(JdbcDataSourceConfig config, String sql) throws JdbcExecutorEx ds.setKeepaliveTime(config.getConnectionPoolMaxLifeTime() / 5L); // default 6 min } hikariDataSource = ds; - JdbcDataSource.getDataSource().putSource(hikariDataSourceKey, ds); + JdbcDataSource.getDataSource().putSource(hikariDataSourceKey, hikariDataSource); LOG.info("JdbcClient set" + " ConnectionPoolMinSize = " + config.getConnectionPoolMinSize() + ", ConnectionPoolMaxSize = " + config.getConnectionPoolMaxSize() diff --git a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcDataSource.java b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcDataSource.java index 447566596a7e92..1aea763852fcc3 100644 --- a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcDataSource.java +++ b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcDataSource.java @@ -59,8 +59,10 @@ public Map getSourcesMap() { } public void setCleanupInterval(long interval) { - this.cleanupInterval = interval * 1000L; - restartCleanupTask(); + if (this.cleanupInterval != interval * 1000L) { + this.cleanupInterval = interval * 1000L; + restartCleanupTask(); + } } private synchronized void restartCleanupTask() {