This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 433ba54d94f Refactor GlobalClockTransactionHook (#26861)
433ba54d94f is described below
commit 433ba54d94f3e763a85695cba3c0829580176e99
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jul 9 22:54:49 2023 +0800
Refactor GlobalClockTransactionHook (#26861)
---
.../core/executor/GlobalClockTransactionHook.java | 30 +++++++++++++++-------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/executor/GlobalClockTransactionHook.java
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/executor/GlobalClockTransactionHook.java
index 6acd91467a5..7213b701506 100644
---
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/executor/GlobalClockTransactionHook.java
+++
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/executor/GlobalClockTransactionHook.java
@@ -18,10 +18,12 @@
package org.apache.shardingsphere.globalclock.core.executor;
import org.apache.shardingsphere.globalclock.core.provider.GlobalClockProvider;
-import
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.lock.GlobalLockNames;
import org.apache.shardingsphere.infra.lock.LockContext;
import org.apache.shardingsphere.infra.lock.LockDefinition;
+import
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
+import org.apache.shardingsphere.infra.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.lock.GlobalLockDefinition;
import
org.apache.shardingsphere.sql.parser.sql.common.enums.TransactionIsolationLevel;
@@ -30,6 +32,7 @@ import
org.apache.shardingsphere.transaction.spi.TransactionHookAdapter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
+import java.util.Optional;
import java.util.Properties;
/**
@@ -37,21 +40,30 @@ import java.util.Properties;
*/
public final class GlobalClockTransactionHook extends TransactionHookAdapter {
- private GlobalClockProvider globalClockProvider;
-
- private GlobalClockTransactionExecutor globalClockTransactionExecutor;
-
private final LockDefinition lockDefinition = new
GlobalLockDefinition(GlobalLockNames.GLOBAL_LOCK.getLockName());
private boolean enabled;
+ private GlobalClockTransactionExecutor globalClockTransactionExecutor;
+
+ private GlobalClockProvider globalClockProvider;
+
@Override
public void init(final Properties props) {
- enabled = Boolean.parseBoolean(props.getProperty("enabled"));
- if (enabled) {
- globalClockProvider =
TypedSPILoader.getService(GlobalClockProvider.class, String.join(".",
props.getProperty("type"), props.getProperty("provider")));
- globalClockTransactionExecutor =
TypedSPILoader.getService(GlobalClockTransactionExecutor.class,
props.getProperty("trunkType"));
+ if (!Boolean.parseBoolean(props.getProperty("enabled"))) {
+ enabled = false;
+ return;
+ }
+ DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, props.getProperty("trunkType"));
+ Optional<GlobalClockTransactionExecutor>
globalClockTransactionExecutor =
DatabaseTypedSPILoader.findService(GlobalClockTransactionExecutor.class,
databaseType);
+ if (!globalClockTransactionExecutor.isPresent()) {
+ enabled = false;
+ return;
}
+ enabled = true;
+ this.globalClockTransactionExecutor =
globalClockTransactionExecutor.get();
+ globalClockProvider =
TypedSPILoader.getService(GlobalClockProvider.class, String.join(".",
props.getProperty("type"), props.getProperty("provider")));
+
}
@Override