From a12058609f7281a43dee6d0245566646c8e82542 Mon Sep 17 00:00:00 2001 From: Wenjun Ruan Date: Sat, 1 Oct 2022 06:57:12 +0800 Subject: [PATCH] Fix hive datasource connection leak (#12226) --- .../datasource/hive/HiveDataSourceClient.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/HiveDataSourceClient.java b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/HiveDataSourceClient.java index 901b67d82c..29d34636c7 100644 --- a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/HiveDataSourceClient.java +++ b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/HiveDataSourceClient.java @@ -45,6 +45,7 @@ import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.jdbc.core.JdbcTemplate; import com.google.common.util.concurrent.ThreadFactoryBuilder; @@ -81,8 +82,8 @@ public class HiveDataSourceClient extends CommonDataSourceClient { this.ugi = createUserGroupInformation(baseConnectionParam.getUser()); logger.info("Create ugi success."); - super.initClient(baseConnectionParam, dbType); this.dataSource = JDBCDataSourceProvider.createOneSessionJdbcDataSource(baseConnectionParam, dbType); + this.jdbcTemplate = new JdbcTemplate(dataSource); logger.info("Init {} success.", getClass().getName()); } @@ -167,10 +168,13 @@ public class HiveDataSourceClient extends CommonDataSourceClient { @Override public void close() { - super.close(); + try { + super.close(); + } finally { + kerberosRenewalService.shutdown(); + this.ugi = null; + } + logger.info("Closed Hive datasource client."); - logger.info("close {}.", this.getClass().getSimpleName()); - kerberosRenewalService.shutdown(); - this.ugi = null; } }