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