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

Reply via email to