You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ch...@apache.org on 2022/11/07 09:14:52 UTC

[dolphinscheduler] branch 3.0.2-prepare updated: Fix hive datasource connection leak (#12226) (#12777)

This is an automated email from the ASF dual-hosted git repository.

chufenggao pushed a commit to branch 3.0.2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/3.0.2-prepare by this push:
     new f8e02723e3 Fix hive datasource connection leak (#12226) (#12777)
f8e02723e3 is described below

commit f8e02723e362d285cf8d5d04eb937b9244aca1a3
Author: Eric Gao <er...@gmail.com>
AuthorDate: Mon Nov 7 17:14:45 2022 +0800

    Fix hive datasource connection leak (#12226) (#12777)
    
    Co-authored-by: Wenjun Ruan <we...@apache.org>
---
 .../plugin/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 735d6a35f2..58f5fa8f6a 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
@@ -43,6 +43,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());
     }
 
@@ -165,10 +166,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;
     }
 }