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 7addefbfe8e branch-2.1: [fix](mem leak) fe non_heap mem leak while use jdbc catalog #45806 (#45980) 7addefbfe8e is described below commit 7addefbfe8eddf9d73a83a25a14e133ce34e79f6 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> AuthorDate: Thu Dec 26 15:05:28 2024 +0800 branch-2.1: [fix](mem leak) fe non_heap mem leak while use jdbc catalog #45806 (#45980) Cherry-picked from #45806 Co-authored-by: camby <camby...@tencent.com> --- .../apache/doris/datasource/jdbc/client/JdbcClient.java | 14 +++++++++++--- 1 file changed, 11 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 08befe4561e..bfa22b25ea6 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 @@ -47,6 +47,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; @Getter @@ -55,6 +56,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 catalogName; protected String dbType; protected String jdbcUser; @@ -146,11 +149,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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org