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);
             });
         }

Reply via email to