This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 ea643b38bc8 Refactor GlobalClockRule (#28164)
ea643b38bc8 is described below
commit ea643b38bc893a8a2224f507d0d84e7820d40725
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Aug 18 19:17:53 2023 +0800
Refactor GlobalClockRule (#28164)
* Refactor usages of StorageUnitMetaData.dataSources
* Refactor GlobalClockRule
---
.../globalclock/core/rule/GlobalClockRule.java | 16 ++++++++--------
.../proxy/backend/util/StorageUnitUtils.java | 4 ++--
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/rule/GlobalClockRule.java
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/rule/GlobalClockRule.java
index fd6cb10a630..13d5b9ca101 100644
---
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/rule/GlobalClockRule.java
+++
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/rule/GlobalClockRule.java
@@ -23,15 +23,16 @@ import
org.apache.shardingsphere.globalclock.core.provider.GlobalClockProvider;
import org.apache.shardingsphere.infra.database.DatabaseTypeEngine;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
import org.apache.shardingsphere.infra.rule.identifier.scope.GlobalRule;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.transaction.spi.TransactionHook;
-import javax.sql.DataSource;
import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
+import java.util.Optional;
import java.util.Properties;
-import java.util.stream.Collectors;
/**
* Global clock rule.
@@ -45,13 +46,13 @@ public final class GlobalClockRule implements GlobalRule {
configuration = ruleConfig;
if (ruleConfig.isEnabled()) {
TypedSPILoader.getService(GlobalClockProvider.class,
getGlobalClockProviderType(), configuration.getProps());
- TypedSPILoader.getService(TransactionHook.class, "GLOBAL_CLOCK",
getProps(databases));
+ TypedSPILoader.getService(TransactionHook.class, "GLOBAL_CLOCK",
createProperties(databases));
}
}
- private Properties getProps(final Map<String, ShardingSphereDatabase>
databases) {
+ private Properties createProperties(final Map<String,
ShardingSphereDatabase> databases) {
Properties result = new Properties();
- DatabaseType storageType =
DatabaseTypeEngine.getStorageType(getDataSources(databases));
+ DatabaseType storageType =
findStorageType(databases.values()).orElseGet(() ->
DatabaseTypeEngine.getStorageType(Collections.emptyList()));
result.setProperty("trunkType",
storageType.getTrunkDatabaseType().orElse(storageType).getType());
result.setProperty("enabled",
String.valueOf(configuration.isEnabled()));
result.setProperty("type", configuration.getType());
@@ -59,9 +60,8 @@ public final class GlobalClockRule implements GlobalRule {
return result;
}
- private Collection<DataSource> getDataSources(final Map<String,
ShardingSphereDatabase> databases) {
- return databases.values().stream().filter(each ->
!each.getResourceMetaData().getStorageUnitMetaData().getStorageUnits().isEmpty())
- .flatMap(each ->
each.getResourceMetaData().getStorageUnitMetaData().getDataSources().values().stream()).collect(Collectors.toList());
+ private Optional<DatabaseType> findStorageType(final
Collection<ShardingSphereDatabase> databases) {
+ return databases.stream().flatMap(each ->
each.getResourceMetaData().getStorageUnitMetaData().getStorageUnits().values().stream()).findFirst().map(StorageUnit::getStorageType);
}
/**
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/StorageUnitUtils.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/StorageUnitUtils.java
index ef4b5b13fe7..26e07edb396 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/StorageUnitUtils.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/StorageUnitUtils.java
@@ -60,7 +60,7 @@ public final class StorageUnitUtils {
}
inUsedStorageUnits.forEach(storageUnit -> {
Collection<String> rules = result.getOrDefault(storageUnit,
new LinkedHashSet<>());
- rules.add(each.getType());
+ rules.add(each.getClass().getSimpleName());
result.put(storageUnit, rules);
});
}
@@ -74,7 +74,7 @@ public final class StorageUnitUtils {
}
inUsedStorageUnits.forEach(storageUnit -> {
Collection<String> rules = result.getOrDefault(storageUnit,
new LinkedHashSet<>());
- rules.add(each.getType());
+ rules.add(each.getClass().getSimpleName());
result.put(storageUnit, rules);
});
}