From 0a44107bf9fdf758eedab06b1fe35ad9dc6a0791 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 0cef82c1b5..d076e81c9a 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; @@ -79,8 +80,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()); } @@ -166,10 +167,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; } }