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

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

commit 44c6a053e7b162c42bba064d828891b664db4b42
Author: chuxing <[email protected]>
AuthorDate: Sun May 15 10:24:31 2022 +0800

    [fix-9991][worker]fix statement is closed before resultSet.getMetaData() 
(#10014)
    
    
    (cherry picked from commit df04c4aef0956acf3ee948c418d9c546cbc8771c)
---
 .../dolphinscheduler/plugin/task/sql/SqlTask.java  | 22 ++++++----------------
 1 file changed, 6 insertions(+), 16 deletions(-)

diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java
index 3b0fa0e8c5..b3943ce0a1 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-sql/src/main/java/org/apache/dolphinscheduler/plugin/task/sql/SqlTask.java
@@ -179,7 +179,6 @@ public class SqlTask extends AbstractTaskExecutor {
                                   List<SqlBinds> postStatementsBinds,
                                   List<String> createFuncs) throws Exception {
         Connection connection = null;
-        ResultSet resultSet = null;
         try {
 
             // create connection
@@ -197,8 +196,7 @@ public class SqlTask extends AbstractTaskExecutor {
             // decide whether to executeQuery or executeUpdate based on sqlType
             if (sqlParameters.getSqlType() == SqlType.QUERY.ordinal()) {
                 // query statements need to be convert to JsonArray and 
inserted into Alert to send
-                resultSet = executeQuery(connection, 
mainStatementsBinds.get(0), "main");
-                result = resultProcess(resultSet);
+                result = executeQuery(connection, mainStatementsBinds.get(0), 
"main");
             } else if (sqlParameters.getSqlType() == 
SqlType.NON_QUERY.ordinal()) {
                 // non query statement
                 String updateResult = executeUpdate(connection, 
mainStatementsBinds, "main");
@@ -213,7 +211,7 @@ public class SqlTask extends AbstractTaskExecutor {
             logger.error("execute sql error: {}", e.getMessage());
             throw e;
         } finally {
-            close(resultSet, connection);
+            close(connection);
         }
     }
 
@@ -292,10 +290,11 @@ public class SqlTask extends AbstractTaskExecutor {
         setTaskAlertInfo(taskAlertInfo);
     }
 
-    private ResultSet executeQuery(Connection connection, SqlBinds sqlBinds, 
String handlerType) throws Exception {
+    private String executeQuery(Connection connection, SqlBinds sqlBinds, 
String handlerType) throws Exception {
         try (PreparedStatement statement = prepareStatementAndBind(connection, 
sqlBinds)) {
             logger.info("{} statement execute query, for sql: {}", 
handlerType, sqlBinds.getSql());
-            return statement.executeQuery();
+            ResultSet resultSet = statement.executeQuery();
+            return resultProcess(resultSet);
         }
     }
 
@@ -329,18 +328,9 @@ public class SqlTask extends AbstractTaskExecutor {
     /**
      * close jdbc resource
      *
-     * @param resultSet resultSet
      * @param connection connection
      */
-    private void close(ResultSet resultSet, Connection connection) {
-        if (resultSet != null) {
-            try {
-                resultSet.close();
-            } catch (SQLException e) {
-                logger.error("close result set error : {}", e.getMessage(), e);
-            }
-        }
-
+    private void close(Connection connection) {
         if (connection != null) {
             try {
                 connection.close();

Reply via email to