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

morningman pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 80a27ca1bd9 [branch-2.1][improvement](jdbc catalog) Force all 
resources to be closed in the close method (#39666)
80a27ca1bd9 is described below

commit 80a27ca1bd9365098336b2c2f95f5fbfcf5b4025
Author: zy-kkk <[email protected]>
AuthorDate: Wed Aug 21 18:35:35 2024 +0800

    [branch-2.1][improvement](jdbc catalog) Force all resources to be closed in 
the close method (#39666)
    
    pick (#39423)
---
 .../org/apache/doris/jdbc/BaseJdbcExecutor.java    | 27 ++++++----------------
 .../org/apache/doris/jdbc/MySQLJdbcExecutor.java   |  4 +---
 .../apache/doris/jdbc/SQLServerJdbcExecutor.java   |  4 +---
 3 files changed, 9 insertions(+), 26 deletions(-)

diff --git 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java
 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java
index 08f5e65181e..d1cd0c9d33e 100644
--- 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java
+++ 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/BaseJdbcExecutor.java
@@ -103,20 +103,14 @@ public abstract class BaseJdbcExecutor implements 
JdbcExecutor {
                 try {
                     stmt.cancel();
                 } catch (SQLException e) {
-                    LOG.error("Error cancelling statement", e);
+                    LOG.warn("Cannot cancelling statement: ", e);
                 }
             }
 
-            boolean shouldAbort = conn != null && resultSet != null;
-            boolean aborted = false; // Used to record whether the abort 
operation is performed
-            if (shouldAbort) {
-                aborted = abortReadConnection(conn, resultSet);
-            }
-
-            // If no abort operation is performed, the resource needs to be 
closed manually
-            if (!aborted) {
-                closeResources(resultSet, stmt, conn);
+            if (conn != null && resultSet != null) {
+                abortReadConnection(conn, resultSet);
             }
+            closeResources(resultSet, stmt, conn);
         } finally {
             if (config.getConnectionPoolMinSize() == 0 && hikariDataSource != 
null) {
                 hikariDataSource.close();
@@ -130,23 +124,16 @@ public abstract class BaseJdbcExecutor implements 
JdbcExecutor {
         for (AutoCloseable closeable : closeables) {
             if (closeable != null) {
                 try {
-                    if (closeable instanceof Connection) {
-                        if (!((Connection) closeable).isClosed()) {
-                            closeable.close();
-                        }
-                    } else {
-                        closeable.close();
-                    }
+                    closeable.close();
                 } catch (Exception e) {
-                    LOG.error("Cannot close resource: ", e);
+                    LOG.warn("Cannot close resource: ", e);
                 }
             }
         }
     }
 
-    protected boolean abortReadConnection(Connection connection, ResultSet 
resultSet)
+    protected void abortReadConnection(Connection connection, ResultSet 
resultSet)
             throws SQLException {
-        return false;
     }
 
     public void cleanDataSource() {
diff --git 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/MySQLJdbcExecutor.java
 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/MySQLJdbcExecutor.java
index 5cdd30a9751..60f190f1291 100644
--- 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/MySQLJdbcExecutor.java
+++ 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/MySQLJdbcExecutor.java
@@ -52,15 +52,13 @@ public class MySQLJdbcExecutor extends BaseJdbcExecutor {
     }
 
     @Override
-    protected boolean abortReadConnection(Connection connection, ResultSet 
resultSet)
+    protected void abortReadConnection(Connection connection, ResultSet 
resultSet)
             throws SQLException {
         if (!resultSet.isAfterLast()) {
             // Abort connection before closing. Without this, the MySQL driver
             // attempts to drain the connection by reading all the results.
             connection.abort(MoreExecutors.directExecutor());
-            return true;
         }
-        return false;
     }
 
     @Override
diff --git 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/SQLServerJdbcExecutor.java
 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/SQLServerJdbcExecutor.java
index efe47b2d075..6679395d551 100644
--- 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/SQLServerJdbcExecutor.java
+++ 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/SQLServerJdbcExecutor.java
@@ -38,15 +38,13 @@ public class SQLServerJdbcExecutor extends BaseJdbcExecutor 
{
     }
 
     @Override
-    protected boolean abortReadConnection(Connection connection, ResultSet 
resultSet)
+    protected void abortReadConnection(Connection connection, ResultSet 
resultSet)
             throws SQLException {
         if (!resultSet.isAfterLast()) {
             // Abort connection before closing. Without this, the SQLServer 
driver
             // attempts to drain the connection by reading all the results.
             connection.abort(MoreExecutors.directExecutor());
-            return true;
         }
-        return false;
     }
 
     @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to