From fcbdd77f781f0ec27776dd8ea3dabd052577c485 Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 10 May 2024 11:24:39 +0800 Subject: [PATCH] [fix](jdbc catalog) Fix ClassLoader Scope in JdbcExecutor Initialization (#34620) --- .../src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java | 2 +- .../main/java/org/apache/doris/jdbc/DefaultJdbcExecutor.java | 2 +- 2 files changed, 2 insertions(+), 2 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 6ff9f6ec69..7474824446 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 @@ -308,13 +308,13 @@ public abstract class BaseJdbcExecutor implements JdbcExecutor { try { ClassLoader parent = getClass().getClassLoader(); ClassLoader classLoader = UdfUtils.getClassLoader(config.getJdbcDriverUrl(), parent); + Thread.currentThread().setContextClassLoader(classLoader); hikariDataSource = JdbcDataSource.getDataSource().getSource(hikariDataSourceKey); if (hikariDataSource == null) { synchronized (hikariDataSourceLock) { hikariDataSource = JdbcDataSource.getDataSource().getSource(hikariDataSourceKey); if (hikariDataSource == null) { long start = System.currentTimeMillis(); - Thread.currentThread().setContextClassLoader(classLoader); HikariDataSource ds = new HikariDataSource(); ds.setDriverClassName(config.getJdbcDriverClass()); ds.setJdbcUrl(config.getJdbcUrl()); diff --git a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/DefaultJdbcExecutor.java b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/DefaultJdbcExecutor.java index 9faaadad15..7d464e2369 100644 --- a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/DefaultJdbcExecutor.java +++ b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/DefaultJdbcExecutor.java @@ -352,13 +352,13 @@ public class DefaultJdbcExecutor { } else { ClassLoader parent = getClass().getClassLoader(); ClassLoader classLoader = UdfUtils.getClassLoader(config.getJdbcDriverUrl(), parent); + Thread.currentThread().setContextClassLoader(classLoader); hikariDataSource = JdbcDataSource.getDataSource().getSource(hikariDataSourceKey); if (hikariDataSource == null) { synchronized (hikariDataSourceLock) { hikariDataSource = JdbcDataSource.getDataSource().getSource(hikariDataSourceKey); if (hikariDataSource == null) { long start = System.currentTimeMillis(); - Thread.currentThread().setContextClassLoader(classLoader); HikariDataSource ds = new HikariDataSource(); ds.setDriverClassName(config.getJdbcDriverClass()); ds.setJdbcUrl(config.getJdbcUrl());