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

chengzhang 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 eba583b4585 Extract the usage of cachedConnections.values (#31714)
eba583b4585 is described below

commit eba583b4585914af55861bce801ef19dab952e11
Author: ZhangCheng <[email protected]>
AuthorDate: Sun Jun 16 13:56:08 2024 +0800

    Extract the usage of cachedConnections.values (#31714)
---
 .../DriverDatabaseConnectionManager.java           | 24 +++++++++++++---------
 .../core/connection/ShardingSphereConnection.java  | 12 ++++++++---
 2 files changed, 23 insertions(+), 13 deletions(-)

diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
index 1ef2174e108..680e15abea9 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
@@ -169,7 +169,11 @@ public final class DriverDatabaseConnectionManager 
implements OnlineDatabaseConn
      */
     public void setAutoCommit(final boolean autoCommit) throws SQLException {
         methodInvocationRecorder.record("setAutoCommit", target -> 
target.setAutoCommit(autoCommit));
-        forceExecuteTemplate.execute(cachedConnections.values(), connection -> 
connection.setAutoCommit(autoCommit));
+        forceExecuteTemplate.execute(getCachedConnections(), connection -> 
connection.setAutoCommit(autoCommit));
+    }
+    
+    private Collection<Connection> getCachedConnections() {
+        return cachedConnections.values();
     }
     
     /**
@@ -181,14 +185,14 @@ public final class DriverDatabaseConnectionManager 
implements OnlineDatabaseConn
         ConnectionTransaction connectionTransaction = 
getConnectionTransaction();
         try {
             if (connectionTransaction.isLocalTransaction() && 
connectionContext.getTransactionContext().isExceptionOccur()) {
-                forceExecuteTemplate.execute(cachedConnections.values(), 
Connection::rollback);
+                forceExecuteTemplate.execute(getCachedConnections(), 
Connection::rollback);
             } else if (connectionTransaction.isLocalTransaction()) {
-                forceExecuteTemplate.execute(cachedConnections.values(), 
Connection::commit);
+                forceExecuteTemplate.execute(getCachedConnections(), 
Connection::commit);
             } else {
                 connectionTransaction.commit();
             }
         } finally {
-            for (Connection each : cachedConnections.values()) {
+            for (Connection each : getCachedConnections()) {
                 
ConnectionSavepointManager.getInstance().transactionFinished(each);
             }
         }
@@ -203,12 +207,12 @@ public final class DriverDatabaseConnectionManager 
implements OnlineDatabaseConn
         ConnectionTransaction connectionTransaction = 
getConnectionTransaction();
         try {
             if (connectionTransaction.isLocalTransaction()) {
-                forceExecuteTemplate.execute(cachedConnections.values(), 
Connection::rollback);
+                forceExecuteTemplate.execute(getCachedConnections(), 
Connection::rollback);
             } else {
                 connectionTransaction.rollback();
             }
         } finally {
-            for (Connection each : cachedConnections.values()) {
+            for (Connection each : getCachedConnections()) {
                 
ConnectionSavepointManager.getInstance().transactionFinished(each);
             }
         }
@@ -221,7 +225,7 @@ public final class DriverDatabaseConnectionManager 
implements OnlineDatabaseConn
      * @throws SQLException SQL exception
      */
     public void rollback(final Savepoint savepoint) throws SQLException {
-        for (Connection each : cachedConnections.values()) {
+        for (Connection each : getCachedConnections()) {
             ConnectionSavepointManager.getInstance().rollbackToSavepoint(each, 
savepoint.getSavepointName());
         }
     }
@@ -235,7 +239,7 @@ public final class DriverDatabaseConnectionManager 
implements OnlineDatabaseConn
      */
     public Savepoint setSavepoint(final String savepointName) throws 
SQLException {
         ShardingSphereSavepoint result = new 
ShardingSphereSavepoint(savepointName);
-        for (Connection each : cachedConnections.values()) {
+        for (Connection each : getCachedConnections()) {
             ConnectionSavepointManager.getInstance().setSavepoint(each, 
savepointName);
         }
         methodInvocationRecorder.record("setSavepoint", target -> 
ConnectionSavepointManager.getInstance().setSavepoint(target, savepointName));
@@ -250,7 +254,7 @@ public final class DriverDatabaseConnectionManager 
implements OnlineDatabaseConn
      */
     public Savepoint setSavepoint() throws SQLException {
         ShardingSphereSavepoint result = new ShardingSphereSavepoint();
-        for (Connection each : cachedConnections.values()) {
+        for (Connection each : getCachedConnections()) {
             ConnectionSavepointManager.getInstance().setSavepoint(each, 
result.getSavepointName());
         }
         methodInvocationRecorder.record("setSavepoint", target -> 
ConnectionSavepointManager.getInstance().setSavepoint(target, 
result.getSavepointName()));
@@ -264,7 +268,7 @@ public final class DriverDatabaseConnectionManager 
implements OnlineDatabaseConn
      * @throws SQLException SQL exception
      */
     public void releaseSavepoint(final Savepoint savepoint) throws 
SQLException {
-        for (Connection each : cachedConnections.values()) {
+        for (Connection each : getCachedConnections()) {
             ConnectionSavepointManager.getInstance().releaseSavepoint(each, 
savepoint.getSavepointName());
         }
     }
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
index 9e6caad1a03..7b1683a923f 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
@@ -184,9 +184,15 @@ public final class ShardingSphereConnection extends 
AbstractConnectionAdapter {
     
     private void processLocalTransaction() throws SQLException {
         databaseConnectionManager.setAutoCommit(autoCommit);
-        if (!autoCommit) {
-            getConnectionContext().getTransactionContext()
-                    
.beginTransaction(String.valueOf(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(TransactionRule.class).getDefaultType()));
+        if (autoCommit) {
+            if 
(getConnectionContext().getTransactionContext().isInTransaction()) {
+                getConnectionContext().getTransactionContext().close();
+            }
+        } else {
+            if 
(!getConnectionContext().getTransactionContext().isInTransaction()) {
+                getConnectionContext().getTransactionContext()
+                        
.beginTransaction(String.valueOf(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(TransactionRule.class).getDefaultType()));
+            }
         }
     }
     

Reply via email to