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();
