This is an automated email from the ASF dual-hosted git repository.
cambyzju pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new bef4651fb46 branch-2.0: [fix](mem leak) fe non_heap mem leak while use
jdbc catalog #45806 (#47626)
bef4651fb46 is described below
commit bef4651fb465d945ba93babdef7d1db244c58cb0
Author: lw112 <[email protected]>
AuthorDate: Mon Feb 10 19:11:47 2025 +0800
branch-2.0: [fix](mem leak) fe non_heap mem leak while use jdbc catalog
#45806 (#47626)
---
.../org/apache/doris/datasource/jdbc/client/JdbcClient.java | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
index 455c9bbc4eb..aaae8993fcd 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
@@ -53,6 +53,8 @@ public abstract class JdbcClient {
private static final int HTTP_TIMEOUT_MS = 10000;
protected static final int JDBC_DATETIME_SCALE = 6;
+ private static final Map<URL, ClassLoader> classLoaderMap = new
ConcurrentHashMap<>();
+
private String catalog;
protected String dbType;
protected String jdbcUser;
@@ -145,11 +147,16 @@ public abstract class JdbcClient {
}
}
- private void initializeClassLoader(JdbcClientConfig config) {
+ private synchronized void initializeClassLoader(JdbcClientConfig config) {
try {
URL[] urls = {new
URL(JdbcResource.getFullDriverUrl(config.getDriverUrl()))};
- ClassLoader parent = getClass().getClassLoader();
- this.classLoader = URLClassLoader.newInstance(urls, parent);
+ if (classLoaderMap.containsKey(urls[0])) {
+ this.classLoader = classLoaderMap.get(urls[0]);
+ } else {
+ ClassLoader parent = getClass().getClassLoader();
+ this.classLoader = URLClassLoader.newInstance(urls, parent);
+ classLoaderMap.put(urls[0], this.classLoader);
+ }
} catch (MalformedURLException e) {
throw new RuntimeException("Error loading JDBC driver.", e);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]