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

sunnianjun 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 83d30cd8450 Refactor MetaDataContextsFactory persist meta data (#30804)
83d30cd8450 is described below

commit 83d30cd8450c77e8995974bf3f8cfadbd8e934f7
Author: zhaojinchao <[email protected]>
AuthorDate: Mon Apr 8 17:40:15 2024 +0800

    Refactor MetaDataContextsFactory persist meta data (#30804)
---
 .../mode/metadata/MetaDataContextsFactory.java               | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
index 708180c3ab6..2ebef6ecac8 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
@@ -33,11 +33,13 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
 import org.apache.shardingsphere.infra.state.datasource.DataSourceStateManager;
 import org.apache.shardingsphere.metadata.factory.ExternalMetaDataFactory;
 import org.apache.shardingsphere.metadata.factory.InternalMetaDataFactory;
+import org.apache.shardingsphere.metadata.persist.MetaDataBasedPersistService;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.event.storage.StorageNodeDataSource;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
@@ -163,9 +165,15 @@ public final class MetaDataContextsFactory {
     }
     
     private static void persistMetaData(final MetaDataContexts 
metaDataContexts) {
-        metaDataContexts.getMetaData().getDatabases().values().forEach(each -> 
each.getSchemas()
-                .forEach((schemaName, schema) -> 
metaDataContexts.getPersistService().getDatabaseMetaDataService().persist(each.getName(),
 schemaName, schema)));
+        metaDataContexts.getMetaData().getDatabases().values().forEach(each -> 
persistMetaData(each.getName(), each.getSchemas(), 
metaDataContexts.getPersistService()));
         
metaDataContexts.getStatistics().getDatabaseData().forEach((databaseName, 
databaseData) -> databaseData.getSchemaData().forEach((schemaName, schemaData) 
-> metaDataContexts
                 
.getPersistService().getShardingSphereDataPersistService().persist(databaseName,
 schemaName, schemaData, metaDataContexts.getMetaData().getDatabases())));
     }
+    
+    private static void persistMetaData(final String databaseName, final 
Map<String, ShardingSphereSchema> schemas, final MetaDataBasedPersistService 
metaDataBasedPersistService) {
+        for (Entry<String, ShardingSphereSchema> entry : schemas.entrySet()) {
+            
metaDataBasedPersistService.getDatabaseMetaDataService().addSchema(databaseName,
 entry.getKey());
+            
metaDataBasedPersistService.getDatabaseMetaDataService().persist(databaseName, 
entry.getKey(), entry.getValue());
+        }
+    }
 }

Reply via email to