This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 8e104c0dcef Remove useless DistributedTransactionOperationType.IGNORE
(#33088)
8e104c0dcef is described below
commit 8e104c0dcefdbfd52f481701e17bd3f8add2348d
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Oct 1 20:11:17 2024 +0800
Remove useless DistributedTransactionOperationType.IGNORE (#33088)
---
.../core/connection/ShardingSphereConnection.java | 19 ++++++++++---------
.../core/connection/ShardingSphereConnectionTest.java | 7 ++++---
.../transaction/ConnectionTransaction.java | 13 +++++++------
.../transaction/ConnectionTransactionTest.java | 13 +++++++------
4 files changed, 28 insertions(+), 24 deletions(-)
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 e5d20c2b43c..6e41678f3bc 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
@@ -32,6 +32,7 @@ import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePrecondition
import org.apache.shardingsphere.infra.executor.sql.process.ProcessEngine;
import
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
import org.apache.shardingsphere.mode.manager.ContextManager;
+import
org.apache.shardingsphere.transaction.ConnectionTransaction.DistributedTransactionOperationType;
import org.apache.shardingsphere.transaction.rule.TransactionRule;
import java.sql.DatabaseMetaData;
@@ -41,6 +42,7 @@ import java.sql.SQLFeatureNotSupportedException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.Collection;
+import java.util.Optional;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Executor;
@@ -177,15 +179,14 @@ public final class ShardingSphereConnection extends
AbstractConnectionAdapter {
}
private void processDistributedTransaction() throws SQLException {
- switch
(databaseConnectionManager.getConnectionTransaction().getDistributedTransactionOperationType(autoCommit))
{
- case BEGIN:
- databaseConnectionManager.begin();
- break;
- case COMMIT:
- databaseConnectionManager.commit();
- break;
- default:
- break;
+ Optional<DistributedTransactionOperationType> operationType =
databaseConnectionManager.getConnectionTransaction().getDistributedTransactionOperationType(autoCommit);
+ if (!operationType.isPresent()) {
+ return;
+ }
+ if (DistributedTransactionOperationType.BEGIN == operationType.get()) {
+ databaseConnectionManager.begin();
+ } else {
+ databaseConnectionManager.commit();
}
}
diff --git
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
index 136ab424eaf..9169ab0170d 100644
---
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
+++
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
@@ -37,6 +37,7 @@ import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collections;
+import java.util.Optional;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
@@ -64,7 +65,7 @@ class ShardingSphereConnectionTest {
@Test
void assertSetAutoCommitWithDistributedTransaction() throws SQLException {
ConnectionTransaction connectionTransaction =
mock(ConnectionTransaction.class);
-
when(connectionTransaction.getDistributedTransactionOperationType(true)).thenReturn(DistributedTransactionOperationType.COMMIT);
+
when(connectionTransaction.getDistributedTransactionOperationType(true)).thenReturn(Optional.of(DistributedTransactionOperationType.COMMIT));
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager(),
null)) {
DriverDatabaseConnectionManager connectionManager =
mockConnectionManager(connection, connectionTransaction);
@@ -92,7 +93,7 @@ class ShardingSphereConnectionTest {
@Test
void assertCommitWithDistributedTransaction() throws SQLException {
ConnectionTransaction connectionTransaction =
mock(ConnectionTransaction.class);
-
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(DistributedTransactionOperationType.BEGIN);
+
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(Optional.of(DistributedTransactionOperationType.BEGIN));
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager(),
null)) {
DriverDatabaseConnectionManager databaseConnectionManager =
mockConnectionManager(connection, connectionTransaction);
@@ -119,7 +120,7 @@ class ShardingSphereConnectionTest {
@Test
void assertRollbackWithDistributedTransaction() throws SQLException {
ConnectionTransaction connectionTransaction =
mock(ConnectionTransaction.class);
-
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(DistributedTransactionOperationType.BEGIN);
+
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(Optional.of(DistributedTransactionOperationType.BEGIN));
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager(),
null)) {
final DriverDatabaseConnectionManager databaseConnectionManager =
mockConnectionManager(connection, connectionTransaction);
diff --git
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
index 8a95ac3633e..c0456ef3ab3 100644
---
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
+++
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
@@ -121,19 +121,20 @@ public final class ConnectionTransaction {
* Get distributed transaction operation type.
*
* @param autoCommit is auto commit
- * @return distributed transaction operation type
+ * @return got distributed transaction operation type
*/
- public DistributedTransactionOperationType
getDistributedTransactionOperationType(final boolean autoCommit) {
+ public Optional<DistributedTransactionOperationType>
getDistributedTransactionOperationType(final boolean autoCommit) {
if (!autoCommit && !distributedTransactionManager.isInTransaction()) {
- return DistributedTransactionOperationType.BEGIN;
+ return Optional.of(DistributedTransactionOperationType.BEGIN);
}
if (autoCommit && distributedTransactionManager.isInTransaction()) {
- return DistributedTransactionOperationType.COMMIT;
+ return Optional.of(DistributedTransactionOperationType.COMMIT);
}
- return DistributedTransactionOperationType.IGNORE;
+ return Optional.empty();
}
public enum DistributedTransactionOperationType {
- BEGIN, COMMIT, IGNORE
+
+ BEGIN, COMMIT
}
}
diff --git
a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
index 28efa6c3186..3fde2974704 100644
---
a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
+++
b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
@@ -26,6 +26,7 @@ import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.SQLException;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -153,26 +154,26 @@ class ConnectionTransactionTest {
@Test
void assertGetDistributedTransactionBeginOperationType() {
assertThat(new ConnectionTransaction(mock(TransactionRule.class,
RETURNS_DEEP_STUBS), new
TransactionConnectionContext()).getDistributedTransactionOperationType(false),
- is(DistributedTransactionOperationType.BEGIN));
+ is(Optional.of(DistributedTransactionOperationType.BEGIN)));
}
@Test
void assertGetDistributedTransactionCommitOperationType() {
TransactionRule rule = mock(TransactionRule.class, RETURNS_DEEP_STUBS);
when(rule.getResource().getTransactionManager(rule.getDefaultType()).isInTransaction()).thenReturn(true);
- assertThat(new ConnectionTransaction(rule, new
TransactionConnectionContext()).getDistributedTransactionOperationType(true),
is(DistributedTransactionOperationType.COMMIT));
+ assertThat(new ConnectionTransaction(rule, new
TransactionConnectionContext()).getDistributedTransactionOperationType(true),
is(Optional.of(DistributedTransactionOperationType.COMMIT)));
}
@Test
- void assertDistributedTransactionIgnoreOperationTypeWhenIsAutoCommit() {
+ void assertDistributedTransactionOperationTypeFailedWhenIsAutoCommit() {
TransactionRule rule = mock(TransactionRule.class, RETURNS_DEEP_STUBS);
when(rule.getResource().getTransactionManager(rule.getDefaultType()).isInTransaction()).thenReturn(true);
- assertThat(new ConnectionTransaction(rule, new
TransactionConnectionContext()).getDistributedTransactionOperationType(false),
is(DistributedTransactionOperationType.IGNORE));
+ assertFalse(new ConnectionTransaction(rule, new
TransactionConnectionContext()).getDistributedTransactionOperationType(false).isPresent());
}
@Test
- void
assertDistributedTransactionIgnoreOperationTypeWhenIsNotInDistributedTransaction()
{
+ void
assertDistributedTransactionOperationTypeFailedWhenIsNotInDistributedTransaction()
{
ConnectionTransaction connectionTransaction = new
ConnectionTransaction(mock(TransactionRule.class, RETURNS_DEEP_STUBS), new
TransactionConnectionContext());
-
assertThat(connectionTransaction.getDistributedTransactionOperationType(true),
is(DistributedTransactionOperationType.IGNORE));
+
assertFalse(connectionTransaction.getDistributedTransactionOperationType(true).isPresent());
}
}