This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 b5036e3b124 Refactor StandaloneMetaDataManagerPersistService to move 
persist logic before memory updated (#34477)
b5036e3b124 is described below

commit b5036e3b1245400ff8dfddf4ff9d151e25329ac3
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sat Jan 25 11:05:46 2025 +0800

    Refactor StandaloneMetaDataManagerPersistService to move persist logic 
before memory updated (#34477)
---
 .../StandaloneMetaDataManagerPersistService.java   | 31 +++++++++++-----------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
index 72f187f58cb..845d28ce9db 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
@@ -74,49 +74,46 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
     
     @Override
     public void createDatabase(final String databaseName) {
-        
metaDataContextManager.getSchemaMetaDataManager().addDatabase(databaseName);
         
metaDataPersistService.getDatabaseMetaDataFacade().getDatabase().add(databaseName);
+        
metaDataContextManager.getSchemaMetaDataManager().addDatabase(databaseName);
         clearServiceCache();
     }
     
     @Override
     public void dropDatabase(final String databaseName) {
-        
metaDataContextManager.getSchemaMetaDataManager().dropDatabase(databaseName);
         
metaDataPersistService.getDatabaseMetaDataFacade().getDatabase().drop(databaseName);
+        
metaDataContextManager.getSchemaMetaDataManager().dropDatabase(databaseName);
         clearServiceCache();
     }
     
     @Override
     public void createSchema(final String databaseName, final String 
schemaName) {
+        
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
 schemaName);
         ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         database.addSchema(new ShardingSphereSchema(schemaName));
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getAllDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
 schemaName);
     }
     
     @Override
     public void alterSchema(final String databaseName, final String 
schemaName, final String logicDataSourceName,
                             final Collection<ShardingSphereTable> 
alteredTables, final Collection<ShardingSphereView> alteredViews,
                             final Collection<String> droppedTables, final 
Collection<String> droppedViews) {
+        
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
 schemaName, alteredTables);
+        
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
 schemaName, alteredViews);
+        droppedTables.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
 schemaName, each));
+        droppedViews.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getView().delete(databaseName,
 schemaName, each));
         ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         addDataNode(database, logicDataSourceName, schemaName, alteredTables, 
alteredViews);
         removeDataNode(database, schemaName, droppedTables, droppedViews);
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getAllDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
 schemaName, alteredTables);
-        
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
 schemaName, alteredViews);
-        droppedTables.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
 schemaName, each));
-        droppedViews.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getView().delete(databaseName,
 schemaName, each));
     }
     
     @Override
     public void alterSchemaName(final String databaseName, final String 
schemaName, final String renameSchemaName, final String logicDataSourceName) {
         ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
-        putSchemaMetaData(database, schemaName, renameSchemaName, 
logicDataSourceName);
-        removeSchemaMetaData(database, schemaName);
-        metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getAllDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
         ShardingSphereSchema alteredSchema = 
database.getSchema(renameSchemaName);
         if (alteredSchema.isEmpty()) {
             
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
 renameSchemaName);
@@ -124,6 +121,9 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
         
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
 renameSchemaName, alteredSchema.getAllTables());
         
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
 renameSchemaName, alteredSchema.getAllViews());
         
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().drop(databaseName,
 schemaName);
+        putSchemaMetaData(database, schemaName, renameSchemaName, 
logicDataSourceName);
+        removeSchemaMetaData(database, schemaName);
+        metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getAllDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
     }
     
     private void putSchemaMetaData(final ShardingSphereDatabase database, 
final String schemaName, final String renamedSchemaName, final String 
logicDataSourceName) {
@@ -216,20 +216,20 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     
     @Override
     public void createTable(final String databaseName, final String 
schemaName, final ShardingSphereTable table, final String logicDataSourceName) {
+        
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
 schemaName, Collections.singleton(table));
         ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         addTableToDataNode(database, schemaName, logicDataSourceName, table);
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getAllDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
 schemaName, Collections.singleton(table));
     }
     
     @Override
     public void dropTables(final String databaseName, final String schemaName, 
final Collection<String> tableNames) {
+        tableNames.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
 schemaName, each));
         ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         removeTablesToDataNode(database, schemaName, tableNames);
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getAllDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        tableNames.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
 schemaName, each));
     }
     
     private void addTableToDataNode(final ShardingSphereDatabase database, 
final String schemaName, final String logicDataSourceName, final 
ShardingSphereTable table) {
@@ -271,8 +271,7 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
         
metaDataContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
                 .forEach(each -> ((GlobalRule) 
each).refresh(metaDataContextManager.getMetaDataContexts().getMetaData().getAllDatabases(),
 GlobalRuleChangedType.DATABASE_CHANGED));
         DataSourceUnitPersistService dataSourceService = 
metaDataPersistService.getDataSourceUnitService();
-        metaDataPersistService.getMetaDataVersionPersistService()
-                .switchActiveVersion(dataSourceService.persist(databaseName, 
toBeUpdatedProps));
+        
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(dataSourceService.persist(databaseName,
 toBeUpdatedProps));
         switchingResource.closeStaleDataSources();
         clearServiceCache();
     }
@@ -348,15 +347,15 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     
     @Override
     public void alterGlobalRuleConfiguration(final RuleConfiguration 
toBeAlteredRuleConfig) {
-        
metaDataContextManager.getGlobalConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
         
metaDataPersistService.getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
+        
metaDataContextManager.getGlobalConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
         clearServiceCache();
     }
     
     @Override
     public void alterProperties(final Properties props) {
-        
metaDataContextManager.getGlobalConfigurationManager().alterProperties(props);
         metaDataPersistService.getPropsService().persist(props);
+        
metaDataContextManager.getGlobalConfigurationManager().alterProperties(props);
         clearServiceCache();
     }
     

Reply via email to