This is an automated email from the ASF dual-hosted git repository. wuweijie pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push: new 655c75431b0 fix: missing clear up savepoints when commits or rollbacks. (#26819) 655c75431b0 is described below commit 655c75431b0a5f906216f03b7fe0324e40d8dd0b Author: kfirst <kxx...@gmail.com> AuthorDate: Sat Jul 8 09:48:55 2023 +0800 fix: missing clear up savepoints when commits or rollbacks. (#26819) Co-authored-by: xiangxin.kong <xiangxin.k...@zhaopin.com.cn> --- .../DriverDatabaseConnectionManager.java | 32 +++++++++++++++------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java index 5391bbe040e..84395edff14 100644 --- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java +++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java @@ -151,12 +151,18 @@ public final class DriverDatabaseConnectionManager implements DatabaseConnection * @throws SQLException SQL exception */ public void commit() throws SQLException { - if (connectionTransaction.isLocalTransaction() && connectionTransaction.isRollbackOnly()) { - forceExecuteTemplate.execute(cachedConnections.values(), Connection::rollback); - } else if (connectionTransaction.isLocalTransaction()) { - forceExecuteTemplate.execute(cachedConnections.values(), Connection::commit); - } else { - connectionTransaction.commit(); + try { + if (connectionTransaction.isLocalTransaction() && connectionTransaction.isRollbackOnly()) { + forceExecuteTemplate.execute(cachedConnections.values(), Connection::rollback); + } else if (connectionTransaction.isLocalTransaction()) { + forceExecuteTemplate.execute(cachedConnections.values(), Connection::commit); + } else { + connectionTransaction.commit(); + } + } finally { + for (Connection each : cachedConnections.values()) { + ConnectionSavepointManager.getInstance().transactionFinished(each); + } } } @@ -166,10 +172,16 @@ public final class DriverDatabaseConnectionManager implements DatabaseConnection * @throws SQLException SQL exception */ public void rollback() throws SQLException { - if (connectionTransaction.isLocalTransaction()) { - forceExecuteTemplate.execute(cachedConnections.values(), Connection::rollback); - } else { - connectionTransaction.rollback(); + try { + if (connectionTransaction.isLocalTransaction()) { + forceExecuteTemplate.execute(cachedConnections.values(), Connection::rollback); + } else { + connectionTransaction.rollback(); + } + } finally { + for (Connection each : cachedConnections.values()) { + ConnectionSavepointManager.getInstance().transactionFinished(each); + } } }