You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2023/07/08 01:49:01 UTC
[shardingsphere] branch master updated: fix: missing clear up savepoints when commits or rollbacks. (#26819)
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 <kx...@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 <xi...@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);
+ }
}
}