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 352d80b2816 Refactor TransactionHook (#35047) 352d80b2816 is described below commit 352d80b2816983ab6b5bb7bd1094af42a34a0c06 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Thu Mar 20 18:39:26 2025 +0800 Refactor TransactionHook (#35047) * Refactor TransactionHook * Refactor TransactionHook --- .../globalclock/executor/GlobalClockTransactionHook.java | 8 +++----- .../globalclock/executor/GlobalClockTransactionHookTest.java | 9 ++++----- .../apache/shardingsphere/transaction/spi/TransactionHook.java | 7 ++----- .../connector/jdbc/transaction/BackendTransactionManager.java | 4 ++-- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java index 4d563fda00d..c578566ebc1 100644 --- a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java +++ b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java @@ -23,7 +23,6 @@ import org.apache.shardingsphere.globalclock.rule.GlobalClockRule; import org.apache.shardingsphere.globalclock.rule.constant.GlobalClockOrder; import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; -import org.apache.shardingsphere.infra.lock.LockContext; import org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext; import org.apache.shardingsphere.sql.parser.statement.core.enums.TransactionIsolationLevel; import org.apache.shardingsphere.transaction.spi.TransactionHook; @@ -75,8 +74,8 @@ public final class GlobalClockTransactionHook implements TransactionHook<GlobalC } @Override - public void beforeCommit(final GlobalClockRule rule, final DatabaseType databaseType, final Collection<Connection> connections, final TransactionConnectionContext transactionContext, - final LockContext lockContext) throws SQLException { + public void beforeCommit(final GlobalClockRule rule, final DatabaseType databaseType, final Collection<Connection> connections, + final TransactionConnectionContext transactionContext) throws SQLException { if (!rule.getConfiguration().isEnabled()) { return; } @@ -88,8 +87,7 @@ public final class GlobalClockTransactionHook implements TransactionHook<GlobalC } @Override - public void afterCommit(final GlobalClockRule rule, final DatabaseType databaseType, final Collection<Connection> connections, final TransactionConnectionContext transactionContext, - final LockContext lockContext) { + public void afterCommit(final GlobalClockRule rule, final DatabaseType databaseType, final Collection<Connection> connections, final TransactionConnectionContext transactionContext) { if (!rule.getConfiguration().isEnabled()) { return; } diff --git a/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHookTest.java b/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHookTest.java index f3b9ee69d4f..7d27961ec58 100644 --- a/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHookTest.java +++ b/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHookTest.java @@ -148,7 +148,7 @@ class GlobalClockTransactionHookTest { @Test void assertBeforeCommitWhenDisabledGlobalClockRule() throws SQLException { LockContext lockContext = mock(LockContext.class); - transactionHook.beforeCommit(rule, databaseType, Collections.emptyList(), transactionContext, lockContext); + transactionHook.beforeCommit(rule, databaseType, Collections.emptyList(), transactionContext); verify(lockContext, times(0)).tryLock(any(), anyLong()); } @@ -157,15 +157,14 @@ class GlobalClockTransactionHookTest { when(rule.getConfiguration().isEnabled()).thenReturn(true); when(rule.getGlobalClockProvider()).thenReturn(Optional.of(globalClockProvider)); when(globalClockProvider.getCurrentTimestamp()).thenReturn(10L); - LockContext lockContext = mock(LockContext.class); when(DatabaseTypedSPILoader.findService(GlobalClockTransactionExecutor.class, databaseType)).thenReturn(Optional.of(globalClockTransactionExecutor)); - transactionHook.beforeCommit(rule, databaseType, Collections.emptyList(), transactionContext, lockContext); + transactionHook.beforeCommit(rule, databaseType, Collections.emptyList(), transactionContext); verify(globalClockTransactionExecutor).sendCommitTimestamp(Collections.emptyList(), 10L); } @Test void assertAfterCommitWhenGlobalClockProviderAbsent() { - transactionHook.afterCommit(rule, databaseType, Collections.emptyList(), transactionContext, mock(LockContext.class)); + transactionHook.afterCommit(rule, databaseType, Collections.emptyList(), transactionContext); verify(globalClockProvider, times(0)).getNextTimestamp(); } @@ -173,7 +172,7 @@ class GlobalClockTransactionHookTest { void assertAfterCommitWhenGlobalClockProviderPresent() { when(rule.getConfiguration().isEnabled()).thenReturn(true); when(rule.getGlobalClockProvider()).thenReturn(Optional.of(globalClockProvider)); - transactionHook.afterCommit(rule, databaseType, Collections.emptyList(), transactionContext, mock(LockContext.class)); + transactionHook.afterCommit(rule, databaseType, Collections.emptyList(), transactionContext); verify(globalClockProvider).getNextTimestamp(); } diff --git a/kernel/transaction/api/src/main/java/org/apache/shardingsphere/transaction/spi/TransactionHook.java b/kernel/transaction/api/src/main/java/org/apache/shardingsphere/transaction/spi/TransactionHook.java index 1eeee79a3c7..fd054da921d 100644 --- a/kernel/transaction/api/src/main/java/org/apache/shardingsphere/transaction/spi/TransactionHook.java +++ b/kernel/transaction/api/src/main/java/org/apache/shardingsphere/transaction/spi/TransactionHook.java @@ -18,7 +18,6 @@ package org.apache.shardingsphere.transaction.spi; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; -import org.apache.shardingsphere.infra.lock.LockContext; import org.apache.shardingsphere.infra.rule.ShardingSphereRule; import org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext; import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI; @@ -86,10 +85,9 @@ public interface TransactionHook<T extends ShardingSphereRule> extends OrderedSP * @param databaseType database type * @param connections connections * @param transactionContext transaction context - * @param lockContext lock context * @throws SQLException SQL exception */ - void beforeCommit(T rule, DatabaseType databaseType, Collection<Connection> connections, TransactionConnectionContext transactionContext, LockContext lockContext) throws SQLException; + void beforeCommit(T rule, DatabaseType databaseType, Collection<Connection> connections, TransactionConnectionContext transactionContext) throws SQLException; /** * Process after committing the transaction. @@ -98,10 +96,9 @@ public interface TransactionHook<T extends ShardingSphereRule> extends OrderedSP * @param databaseType database type * @param connections connections * @param transactionContext transaction context - * @param lockContext lock context * @throws SQLException SQL exception */ - void afterCommit(T rule, DatabaseType databaseType, Collection<Connection> connections, TransactionConnectionContext transactionContext, LockContext lockContext) throws SQLException; + void afterCommit(T rule, DatabaseType databaseType, Collection<Connection> connections, TransactionConnectionContext transactionContext) throws SQLException; /** * Whether to need lock when transaction committed. diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManager.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManager.java index b83446e15e8..15d79a1c858 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManager.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManager.java @@ -112,7 +112,7 @@ public final class BackendTransactionManager implements TransactionManager { return; } for (Entry<ShardingSphereRule, TransactionHook> entry : transactionHooks.entrySet()) { - entry.getValue().beforeCommit(entry.getKey(), databaseType, connection.getCachedConnections().values(), getTransactionContext(), lockContext); + entry.getValue().beforeCommit(entry.getKey(), databaseType, connection.getCachedConnections().values(), getTransactionContext()); } if (TransactionType.LOCAL == TransactionUtils.getTransactionType(getTransactionContext()) || null == distributedTransactionManager) { localTransactionManager.commit(); @@ -121,7 +121,7 @@ public final class BackendTransactionManager implements TransactionManager { } } finally { for (Entry<ShardingSphereRule, TransactionHook> entry : transactionHooks.entrySet()) { - entry.getValue().afterCommit(entry.getKey(), databaseType, connection.getCachedConnections().values(), getTransactionContext(), lockContext); + entry.getValue().afterCommit(entry.getKey(), databaseType, connection.getCachedConnections().values(), getTransactionContext()); } if (isNeedLock) { lockContext.unlock(lockDefinition);