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 0e9af3788f6 Refactor StorageUnitMetaData (#28617)
0e9af3788f6 is described below
commit 0e9af3788f601da055d1a0c044747aa59ec0da28
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Sep 28 22:18:48 2023 +0800
Refactor StorageUnitMetaData (#28617)
* Refactor StorageUnitMetaData
* Fix test case
---
.../metadata/database/resource/ResourceMetaData.java | 9 +++++----
.../database/resource/unit/StorageUnitMetaData.java | 17 +++++------------
.../subscriber/ConfigurationChangedSubscriberTest.java | 1 +
3 files changed, 11 insertions(+), 16 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
index f6d0e3ddaa7..2f5e5dfda4f 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
@@ -49,15 +49,16 @@ public final class ResourceMetaData {
public ResourceMetaData(final Map<String, DataSource> dataSources) {
this.dataSources =
StorageNodeUtils.getStorageNodeDataSources(dataSources);
- storageUnitMetaData = new StorageUnitMetaData(null, this.dataSources,
dataSources.entrySet().stream()
- .collect(Collectors.toMap(Entry::getKey, entry ->
DataSourcePoolPropertiesCreator.create(entry.getValue()), (oldValue,
currentValue) -> oldValue, LinkedHashMap::new)),
- StorageUnitNodeMapUtils.fromDataSources(dataSources));
+ storageUnitMetaData = new StorageUnitMetaData(null,
StorageUnitNodeMapUtils.fromDataSources(dataSources),
+ dataSources.entrySet().stream().collect(
+ Collectors.toMap(Entry::getKey, entry ->
DataSourcePoolPropertiesCreator.create(entry.getValue()), (oldValue,
currentValue) -> oldValue, LinkedHashMap::new)),
+ this.dataSources);
}
public ResourceMetaData(final String databaseName, final
Map<StorageNodeName, DataSource> dataSources,
final Map<String, StorageNode> storageUnitNodeMap,
final Map<String, DataSourcePoolProperties> propsMap) {
this.dataSources = dataSources;
- storageUnitMetaData = new StorageUnitMetaData(databaseName,
dataSources, propsMap, storageUnitNodeMap);
+ storageUnitMetaData = new StorageUnitMetaData(databaseName,
storageUnitNodeMap, propsMap, dataSources);
}
/**
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 34ce3e90ef4..5981c1915f9 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
@@ -37,28 +37,21 @@ public final class StorageUnitMetaData {
// TODO zhangliang: should refactor
private final Map<String, StorageNode> storageNodes;
+ private final Map<String, DataSourcePoolProperties>
dataSourcePoolPropertiesMap;
+
private final Map<String, StorageUnit> storageUnits;
// TODO zhangliang: should refactor
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> storageNodes) {
+ public StorageUnitMetaData(final String databaseName, final Map<String,
StorageNode> storageNodes, final Map<String, DataSourcePoolProperties>
dataSourcePoolPropertiesMap,
+ final Map<StorageNodeName, DataSource>
storageNodeDataSources) {
this.storageNodes = storageNodes;
+ this.dataSourcePoolPropertiesMap = dataSourcePoolPropertiesMap;
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)));
}
-
- /**
- * Get data source pool properties map.
- *
- * @return data source pool properties map
- */
- public Map<String, DataSourcePoolProperties>
getDataSourcePoolPropertiesMap() {
- return storageUnits.entrySet().stream()
- .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSourcePoolProperties(), (oldValue, currentValue) ->
oldValue, LinkedHashMap::new));
- }
}
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 3b76384bebb..b2dd14aa692 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
@@ -113,6 +113,7 @@ class ConfigurationChangedSubscriberTest {
private Map<String, ShardingSphereDatabase> createDatabases() {
when(database.getName()).thenReturn("db");
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class,
RETURNS_DEEP_STUBS);
+
when(resourceMetaData.getStorageUnitMetaData().getStorageNodes()).thenReturn(Collections.emptyMap());
when(database.getResourceMetaData()).thenReturn(resourceMetaData);
when(database.getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
new ShardingSphereSchema()));
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));