This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 a7ef4beffda Refactor refresh metadata after storage unit registered
(#34028)
a7ef4beffda is described below
commit a7ef4beffdab12ae154c40078810e7f7a10905ad
Author: Haoran Meng <[email protected]>
AuthorDate: Thu Dec 12 18:42:41 2024 +0800
Refactor refresh metadata after storage unit registered (#34028)
---
.../persist/ClusterMetaDataManagerPersistService.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
index c2da0ec0392..38d026812dc 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
@@ -125,7 +125,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
MetaDataContexts reloadMetaDataContexts =
MetaDataContextsFactory.createBySwitchResource(databaseName, false,
switchingResource, originalMetaDataContexts,
metaDataPersistService, metaDataContextManager.getComputeNodeInstanceContext());
metaDataPersistService.getDataSourceUnitService().persist(databaseName,
toBeRegisteredProps);
- afterStorageUnitsAltered(databaseName, originalMetaDataContexts,
reloadMetaDataContexts);
+ afterStorageUnitsRegistered(databaseName,
originalMetaDataContexts, reloadMetaDataContexts);
reloadMetaDataContexts.close();
} finally {
closeNewDataSources(newDataSources);
@@ -179,9 +179,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
return
toBeDroppedResourceNames.stream().filter(propsMap::containsKey).collect(Collectors.toList());
}
- private void afterStorageUnitsAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final MetaDataContexts
reloadMetaDataContexts) {
-
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getAllSchemas().forEach(each
-> metaDataPersistService.getDatabaseMetaDataFacade()
-
.getSchema().alterByRuleAltered(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
each));
+ private void afterStorageUnitsRegistered(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final MetaDataContexts
reloadMetaDataContexts) {
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
.ifPresent(optional ->
optional.getSchemaData().forEach((schemaName, schemaData) ->
metaDataPersistService.getShardingSphereDataPersistService()
.persist(originalMetaDataContexts.getMetaData().getDatabase(databaseName),
schemaName, schemaData)));
@@ -189,6 +187,12 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
}
+ private void afterStorageUnitsAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final MetaDataContexts
reloadMetaDataContexts) {
+
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getAllSchemas().forEach(each
-> metaDataPersistService.getDatabaseMetaDataFacade()
+
.getSchema().alterByRuleAltered(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
each));
+ afterStorageUnitsRegistered(databaseName, originalMetaDataContexts,
reloadMetaDataContexts);
+ }
+
private void afterStorageUnitsDropped(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final MetaDataContexts
reloadMetaDataContexts) {
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getAllSchemas().forEach(each
-> metaDataPersistService.getDatabaseMetaDataFacade()
.getSchema().alterByRuleDropped(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
each));