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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 4cb7122a897 [branch-2.1][fix](jdbc catalog) Fix Memory Leak by 
Enabling Weak References in HikariCP (#39833)
4cb7122a897 is described below

commit 4cb7122a89713c08ea8693a3296586c89483c71c
Author: zy-kkk <[email protected]>
AuthorDate: Sat Aug 24 00:45:12 2024 +0800

    [branch-2.1][fix](jdbc catalog) Fix Memory Leak by Enabling Weak References 
in HikariCP (#39833)
    
    pick(#39582)
---
 .../src/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 d1cd0c9d33e..67a0cf5a636 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
@@ -93,6 +93,7 @@ public abstract class BaseJdbcExecutor implements 
JdbcExecutor {
                 
.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();
     }
@@ -308,7 +309,7 @@ public abstract class BaseJdbcExecutor implements 
JdbcExecutor {
                             
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 447566596a7..1aea763852f 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 class JdbcDataSource {
     }
 
     public void setCleanupInterval(long interval) {
-        this.cleanupInterval = interval * 1000L;
-        restartCleanupTask();
+        if (this.cleanupInterval != interval * 1000L) {
+            this.cleanupInterval = interval * 1000L;
+            restartCleanupTask();
+        }
     }
 
     private synchronized void restartCleanupTask() {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to