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