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 ed8439a6c15 Refactor usage of StorageUnitMetaData.unitNodeMappers 
(#28188)
ed8439a6c15 is described below

commit ed8439a6c152ccd2d8aea854e6f627e80f99e351
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Aug 20 22:44:24 2023 +0800

    Refactor usage of StorageUnitMetaData.unitNodeMappers (#28188)
---
 .../context/ConfigurationContextManager.java       | 11 +++----
 .../manager/switcher/ResourceSwitchManager.java    | 34 ++++++++++++----------
 .../mode/manager/ContextManagerTest.java           |  1 -
 .../ConfigurationChangedSubscriberTest.java        |  2 --
 4 files changed, 24 insertions(+), 24 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
index 2329878a646..e44d4f05a0b 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
@@ -27,6 +27,7 @@ import 
org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfigurati
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageResource;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnitNodeMapper;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -274,7 +275,7 @@ public final class ConfigurationContextManager {
      */
     public Map<String, ShardingSphereDatabase> renewDatabase(final 
ShardingSphereDatabase database, final SwitchingResource resource) {
         Map<StorageNode, DataSource> newStorageNodes = 
getNewStorageNodes(database.getResourceMetaData().getStorageNodeDataSources(), 
resource);
-        Map<String, StorageUnitNodeMapper> newStorageUnitNodeMappers = 
getNewStorageUnitNodeMappers(database.getResourceMetaData().getStorageUnitMetaData().getUnitNodeMappers(),
 resource);
+        Map<String, StorageUnitNodeMapper> newStorageUnitNodeMappers = 
getNewStorageUnitNodeMappers(database.getResourceMetaData().getStorageUnitMetaData().getStorageUnits(),
 resource);
         StorageResource newStorageResource = new 
StorageResource(newStorageNodes, newStorageUnitNodeMappers);
         Map<String, DataSourcePoolProperties> propsMap = 
database.getResourceMetaData().getStorageUnitMetaData().getStorageUnits().entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> 
entry.getValue().getDataSourcePoolProperties(), (oldValue, currentValue) -> 
currentValue, LinkedHashMap::new));
@@ -292,11 +293,11 @@ public final class ConfigurationContextManager {
         return result;
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getNewStorageUnitNodeMappers(final Map<String, StorageUnitNodeMapper> 
currentStorageUnitNodeMappers, final SwitchingResource resource) {
-        Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(currentStorageUnitNodeMappers.size(), 1F);
-        for (Entry<String, StorageUnitNodeMapper> entry : 
currentStorageUnitNodeMappers.entrySet()) {
+    private Map<String, StorageUnitNodeMapper> 
getNewStorageUnitNodeMappers(final Map<String, StorageUnit> 
currentStorageUnits, final SwitchingResource resource) {
+        Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(currentStorageUnits.size(), 1F);
+        for (Entry<String, StorageUnit> entry : 
currentStorageUnits.entrySet()) {
             if 
(!resource.getStaleStorageResource().getStorageUnitNodeMappers().containsKey(entry.getKey()))
 {
-                result.put(entry.getKey(), entry.getValue());
+                result.put(entry.getKey(), 
entry.getValue().getUnitNodeMapper());
             }
         }
         return result;
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
index 2b50ebbcfbf..e2b5da6e102 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
@@ -24,6 +24,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.Storag
 import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageResource;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageResourceCreator;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageResourceWithProperties;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnitNodeMapper;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 
@@ -87,7 +88,7 @@ public final class ResourceSwitchManager {
         staleStorageResource.getStorageNodeDataSources()
                 
.putAll(getToBeDeletedDataSources(resourceMetaData.getStorageNodeDataSources(), 
toBeChangedStorageResource.getStorageNodeDataSources().keySet()));
         staleStorageResource.getStorageUnitNodeMappers().putAll(
-                
getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers(),
 toBeChangedStorageResource.getStorageUnitNodeMappers().keySet()));
+                
getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageResource.getStorageUnitNodeMappers().keySet()));
         return new SwitchingResource(resourceMetaData, 
createNewStorageResource(resourceMetaData, toBeChangedStorageResource), 
staleStorageResource, mergedDataSourcePoolPropertiesMap);
     }
     
@@ -109,8 +110,8 @@ public final class ResourceSwitchManager {
     
     private Map<String, StorageUnitNodeMapper> 
getNewStorageUnitNodeMappers(final ResourceMetaData resourceMetaData, final 
Map<String, StorageUnitNodeMapper> toBeChangedStorageUnitNodeMappers) {
         Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers());
-        
result.keySet().removeAll(getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers(),
 toBeChangedStorageUnitNodeMappers.keySet()).keySet());
-        
result.putAll(getChangedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers(),
 toBeChangedStorageUnitNodeMappers));
+        
result.keySet().removeAll(getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMappers.keySet()).keySet());
+        
result.putAll(getChangedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMappers));
         
result.putAll(getToBeAddedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers(),
 toBeChangedStorageUnitNodeMappers));
         return result;
     }
@@ -141,14 +142,15 @@ public final class ResourceSwitchManager {
     }
     
     private StorageResource getToBeRemovedStaleDataSources(final 
ResourceMetaData resourceMetaData, final StorageResourceWithProperties 
toBeRemovedStorageResource) {
-        Map<String, StorageUnitNodeMapper> reservedStorageUnitNodeMappers = 
resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers().entrySet().stream()
-                .filter(entry -> 
!toBeRemovedStorageResource.getStorageUnitNodeMappers().containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
 Entry::getValue));
+        Map<String, StorageUnitNodeMapper> reservedStorageUnitNodeMappers = 
resourceMetaData.getStorageUnitMetaData().getStorageUnits().entrySet().stream()
+                .filter(entry -> 
!toBeRemovedStorageResource.getStorageUnitNodeMappers().containsKey(entry.getKey()))
+                .collect(Collectors.toMap(Entry::getKey, entry -> 
entry.getValue().getUnitNodeMapper()));
         Collection<StorageNode> inUsedDataSourceNames = 
reservedStorageUnitNodeMappers.values().stream().map(StorageUnitNodeMapper::getStorageNode).collect(Collectors.toSet());
         Map<StorageNode, DataSource> staleStorageNodes = 
resourceMetaData.getStorageNodeDataSources().entrySet().stream()
                 .filter(entry -> 
toBeRemovedStorageResource.getStorageNodeDataSources().containsKey(entry.getKey())
 && !inUsedDataSourceNames.contains(entry.getKey()))
                 .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
-        Map<String, StorageUnitNodeMapper> staleStorageUnitNodeMappers = 
resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers().entrySet().stream()
-                .filter(entry -> 
!reservedStorageUnitNodeMappers.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
 Entry::getValue));
+        Map<String, StorageUnitNodeMapper> staleStorageUnitNodeMappers = 
resourceMetaData.getStorageUnitMetaData().getStorageUnits().entrySet().stream()
+                .filter(entry -> 
!reservedStorageUnitNodeMappers.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
 entry -> entry.getValue().getUnitNodeMapper()));
         return new StorageResource(staleStorageNodes, 
staleStorageUnitNodeMappers);
     }
     
@@ -156,7 +158,7 @@ public final class ResourceSwitchManager {
         Map<StorageNode, DataSource> storageNodes = new 
LinkedHashMap<>(resourceMetaData.getStorageNodeDataSources().size(), 1F);
         Map<String, StorageUnitNodeMapper> storageUnitNodeMappers = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers().size(),
 1F);
         
storageNodes.putAll(getToBeChangedDataSources(resourceMetaData.getStorageNodeDataSources(),
 toBeChangedStorageResource.getDataSourcePoolPropertiesMap()));
-        
storageUnitNodeMappers.putAll(getChangedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers(),
 toBeChangedStorageResource.getStorageUnitNodeMappers()));
+        
storageUnitNodeMappers.putAll(getChangedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageResource.getStorageUnitNodeMappers()));
         return new StorageResource(storageNodes, storageUnitNodeMappers);
     }
     
@@ -181,26 +183,26 @@ public final class ResourceSwitchManager {
         return result;
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getToBeDeletedStorageUnitNodeMappers(final Map<String, StorageUnitNodeMapper> 
storageUnitNodeMappers,
+    private Map<String, StorageUnitNodeMapper> 
getToBeDeletedStorageUnitNodeMappers(final Map<String, StorageUnit> 
storageUnits,
                                                                                
     final Collection<String> toBeChangedStorageUnitNames) {
-        Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(storageUnitNodeMappers.size(), 1F);
-        for (Entry<String, StorageUnitNodeMapper> entry : 
storageUnitNodeMappers.entrySet()) {
+        Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(storageUnits.size(), 1F);
+        for (Entry<String, StorageUnit> entry : storageUnits.entrySet()) {
             if (!toBeChangedStorageUnitNames.contains(entry.getKey())) {
-                result.put(entry.getKey(), entry.getValue());
+                result.put(entry.getKey(), 
entry.getValue().getUnitNodeMapper());
             }
         }
         return result;
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getChangedStorageUnitNodeMappers(final Map<String, StorageUnitNodeMapper> 
storageUnitNodeMappers,
+    private Map<String, StorageUnitNodeMapper> 
getChangedStorageUnitNodeMappers(final Map<String, StorageUnit> storageUnits,
                                                                                
 final Map<String, StorageUnitNodeMapper> toBeChangedStorageUnitNodeMappers) {
-        return 
toBeChangedStorageUnitNodeMappers.entrySet().stream().filter(entry -> 
isModifiedStorageUnitNodeMapper(storageUnitNodeMappers, entry.getKey(), 
entry.getValue()))
+        return 
toBeChangedStorageUnitNodeMappers.entrySet().stream().filter(entry -> 
isModifiedStorageUnitNodeMapper(storageUnits, entry.getKey(), entry.getValue()))
                 .collect(Collectors.toMap(Entry::getKey, Entry::getValue, 
(oldValue, currentValue) -> oldValue, LinkedHashMap::new));
     }
     
-    private boolean isModifiedStorageUnitNodeMapper(final Map<String, 
StorageUnitNodeMapper> originalStorageUnitNodeMappers,
+    private boolean isModifiedStorageUnitNodeMapper(final Map<String, 
StorageUnit> originalStorageUnits,
                                                     final String 
dataSourceName, final StorageUnitNodeMapper storageUnitNodeMapper) {
-        return originalStorageUnitNodeMappers.containsKey(dataSourceName) && 
!storageUnitNodeMapper.equals(originalStorageUnitNodeMappers.get(dataSourceName));
+        return originalStorageUnits.containsKey(dataSourceName) && 
!storageUnitNodeMapper.equals(originalStorageUnits.get(dataSourceName).getUnitNodeMapper());
     }
     
     private Map<String, StorageUnitNodeMapper> 
getToBeAddedStorageUnitNodeMappers(final Map<String, StorageUnitNodeMapper> 
storageUnitNodeMappers,
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index b8e19d587bb..e4bc5282954 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -221,7 +221,6 @@ class ContextManagerTest {
         
when(resourceMetaData.getStorageNodeDataSources()).thenReturn(StorageResourceUtils.getStorageNodeDataSources(dataSources));
         StorageUnitMetaData storageUnitMetaData = 
mock(StorageUnitMetaData.class);
         
when(resourceMetaData.getStorageUnitMetaData()).thenReturn(storageUnitMetaData);
-        
when(storageUnitMetaData.getUnitNodeMappers()).thenReturn(StorageResourceUtils.getStorageUnitNodeMappers(dataSources));
         
when(storageUnitMetaData.getStorageUnits()).thenReturn(Collections.emptyMap());
         ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
                 TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
resourceMetaData, mock(RuleMetaData.class), Collections.emptyMap());
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriberTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriberTest.java
index f09a18e67c6..3b76384bebb 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriberTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriberTest.java
@@ -114,8 +114,6 @@ class ConfigurationChangedSubscriberTest {
         when(database.getName()).thenReturn("db");
         ResourceMetaData resourceMetaData = mock(ResourceMetaData.class, 
RETURNS_DEEP_STUBS);
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
-        
when(resourceMetaData.getStorageNodeDataSources()).thenReturn(Collections.emptyMap());
-        
when(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers()).thenReturn(Collections.emptyMap());
         
when(database.getSchemas()).thenReturn(Collections.singletonMap("foo_schema", 
new ShardingSphereSchema()));
         
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "FIXTURE"));
         
when(database.getSchema("foo_schema")).thenReturn(mock(ShardingSphereSchema.class));

Reply via email to