This is an automated email from the ASF dual-hosted git repository.

yx9o 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 5eb742bd722 Refactor StorageUnitMetaData (#28616)
5eb742bd722 is described below

commit 5eb742bd722ebfb234e21012d95af5da99138717
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Sep 28 21:41:29 2023 +0800

    Refactor StorageUnitMetaData (#28616)
    
    * Refactor StorageUnitMetaData
    
    * Refactor StorageUnitMetaData
    
    * Refactor StorageUnitMetaData
---
 .../resource/unit/StorageUnitMetaData.java         | 24 ++++++++--------------
 .../context/ConfigurationContextManager.java       |  2 +-
 .../manager/switcher/NewResourceSwitchManager.java |  4 ++--
 .../manager/switcher/ResourceSwitchManager.java    |  6 +++---
 .../mode/manager/ContextManagerTest.java           |  2 +-
 5 files changed, 15 insertions(+), 23 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
index 0dfa7ce06c0..34ce3e90ef4 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
 public final class StorageUnitMetaData {
     
     // TODO zhangliang: should refactor
-    private final Map<String, StorageNode> storageUnitNodeMap;
+    private final Map<String, StorageNode> storageNodes;
     
     private final Map<String, StorageUnit> storageUnits;
     
@@ -43,13 +43,13 @@ public final class StorageUnitMetaData {
     private final Map<String, DataSource> dataSources;
     
     public StorageUnitMetaData(final String databaseName, final 
Map<StorageNodeName, DataSource> storageNodeDataSources,
-                               final Map<String, DataSourcePoolProperties> 
dataSourcePoolPropertiesMap, final Map<String, StorageNode> storageUnitNodeMap) 
{
-        this.storageUnitNodeMap = storageUnitNodeMap;
-        storageUnits = new LinkedHashMap<>(this.storageUnitNodeMap.size(), 1F);
-        for (Entry<String, StorageNode> entry : 
this.storageUnitNodeMap.entrySet()) {
-            storageUnits.put(entry.getKey(), new StorageUnit(databaseName, 
storageNodeDataSources, dataSourcePoolPropertiesMap.get(entry.getKey()), 
entry.getValue()));
-        }
-        dataSources = createDataSources();
+                               final Map<String, DataSourcePoolProperties> 
dataSourcePoolPropertiesMap, final Map<String, StorageNode> storageNodes) {
+        this.storageNodes = storageNodes;
+        storageUnits = storageNodes.entrySet().stream().collect(
+                Collectors.toMap(Entry::getKey, entry -> new 
StorageUnit(databaseName, storageNodeDataSources, 
dataSourcePoolPropertiesMap.get(entry.getKey()), entry.getValue()),
+                        (oldValue, currentValue) -> currentValue, () -> new 
LinkedHashMap<>(this.storageNodes.size(), 1F)));
+        dataSources = storageUnits.entrySet().stream().collect(
+                Collectors.toMap(Entry::getKey, entry -> 
entry.getValue().getDataSource(), (oldValue, currentValue) -> currentValue, () 
-> new LinkedHashMap<>(storageUnits.size(), 1F)));
     }
     
     /**
@@ -61,12 +61,4 @@ public final class StorageUnitMetaData {
         return storageUnits.entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> 
entry.getValue().getDataSourcePoolProperties(), (oldValue, currentValue) -> 
oldValue, LinkedHashMap::new));
     }
-    
-    private Map<String, DataSource> createDataSources() {
-        Map<String, DataSource> result = new 
LinkedHashMap<>(storageUnits.size(), 1F);
-        for (Entry<String, StorageUnit> entry : storageUnits.entrySet()) {
-            result.put(entry.getKey(), entry.getValue().getDataSource());
-        }
-        return result;
-    }
 }
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 1de6e2f1164..2528f26dfc0 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
@@ -365,7 +365,7 @@ public final class ConfigurationContextManager {
     
     private StorageResource getMergedStorageResource(final ResourceMetaData 
currentResourceMetaData, final SwitchingResource switchingResource) {
         Map<StorageNodeName, DataSource> storageNodeDataSources = 
currentResourceMetaData.getDataSources();
-        Map<String, StorageNode> storageUnitNodeMap = 
currentResourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap();
+        Map<String, StorageNode> storageUnitNodeMap = 
currentResourceMetaData.getStorageUnitMetaData().getStorageNodes();
         if (null != switchingResource && null != 
switchingResource.getNewStorageResource() && 
!switchingResource.getNewStorageResource().getDataSources().isEmpty()) {
             
storageNodeDataSources.putAll(switchingResource.getNewStorageResource().getDataSources());
         }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
index 7c5fdeba9cd..c39f88e7966 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
@@ -120,8 +120,8 @@ public final class NewResourceSwitchManager {
     }
     
     private StorageResource getToBeRemovedStaleStorageResource(final 
ResourceMetaData resourceMetaData, final String storageUnitName) {
-        StorageNode storageNode = 
resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap().remove(storageUnitName);
-        Map<String, StorageNode> reservedStorageUintNodeMap = 
resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap();
+        StorageNode storageNode = 
resourceMetaData.getStorageUnitMetaData().getStorageNodes().remove(storageUnitName);
+        Map<String, StorageNode> reservedStorageUintNodeMap = 
resourceMetaData.getStorageUnitMetaData().getStorageNodes();
         Map<StorageNodeName, DataSource> storageNodes = new LinkedHashMap<>(1, 
1F);
         if (reservedStorageUintNodeMap.values().stream().noneMatch(each -> 
each.equals(storageNode))) {
             storageNodes.put(storageNode.getName(), 
resourceMetaData.getDataSources().get(storageNode.getName()));
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 a4006d5d012..8a0c7da949d 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
@@ -112,10 +112,10 @@ public final class ResourceSwitchManager {
     }
     
     private Map<String, StorageNode> getNewStorageUnitNodeMap(final 
ResourceMetaData resourceMetaData, final Map<String, StorageNode> 
toBeChangedStorageUnitNodeMap) {
-        Map<String, StorageNode> result = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap());
+        Map<String, StorageNode> result = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getStorageNodes());
         
result.keySet().removeAll(getToBeDeletedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMap.keySet()).keySet());
         
result.putAll(getChangedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMap));
-        
result.putAll(getToBeAddedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap(),
 toBeChangedStorageUnitNodeMap));
+        
result.putAll(getToBeAddedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageNodes(),
 toBeChangedStorageUnitNodeMap));
         return result;
     }
     
@@ -164,7 +164,7 @@ public final class ResourceSwitchManager {
     private StorageResource getStaleDataSources(final ResourceMetaData 
resourceMetaData, final Map<String, StorageNode> toBeChangedStorageUnitNodeMap,
                                                 final Map<String, 
DataSourcePoolProperties> storageUnitDataSourcePoolProps) {
         Map<StorageNodeName, DataSource> storageNodes = new 
LinkedHashMap<>(resourceMetaData.getDataSources().size(), 1F);
-        Map<String, StorageNode> storageUnitNodeMap = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap().size(),
 1F);
+        Map<String, StorageNode> storageUnitNodeMap = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getStorageNodes().size(),
 1F);
         
storageNodes.putAll(getToBeChangedDataSources(resourceMetaData.getDataSources(),
 
StorageUnitNodeMapUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps)));
         
storageUnitNodeMap.putAll(getChangedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMap));
         return new StorageResource(storageNodes, storageUnitNodeMap);
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 2b099cd8d38..1656a47c299 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
@@ -261,7 +261,7 @@ class ContextManagerTest {
             storageUnits.put(entry.getKey(), new StorageUnit("foo_db", 
storageNodeDataSourceMap, mock(DataSourcePoolProperties.class), 
entry.getValue()));
         }
         
when(result.getStorageUnitMetaData().getStorageUnits()).thenReturn(storageUnits);
-        
when(result.getStorageUnitMetaData().getStorageUnitNodeMap()).thenReturn(storageUnitNodeMap);
+        
when(result.getStorageUnitMetaData().getStorageNodes()).thenReturn(storageUnitNodeMap);
         when(result.getDataSources()).thenReturn(storageNodeDataSourceMap);
         return result;
     }

Reply via email to