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 21d70b4b115 Use MetaDataContextManager instead of ContextManager for 
the constructor of PersistServiceFacade (#31942)
21d70b4b115 is described below

commit 21d70b4b1154b2a7321f508b5420c642af6fa984
Author: Haoran Meng <[email protected]>
AuthorDate: Mon Jul 1 15:20:47 2024 +0800

    Use MetaDataContextManager instead of ContextManager for the constructor of 
PersistServiceFacade (#31942)
    
    * Use MetaDataContextManager instead of ContextManager for 
PersistServiceFacade
    
    * fix issue of check style
---
 .../mode/manager/ContextManager.java               |   4 +-
 .../mode/metadata/MetaDataContextManager.java      |  40 +++++++-
 .../metadata/manager/ConfigurationManager.java     |  34 ++++---
 .../metadata/manager/ResourceMetaDataManager.java  |  14 ++-
 .../mode/metadata/manager/RuleItemManager.java     |  17 +++-
 .../mode/service/PersistServiceFacade.java         |   8 +-
 .../service/persist/PersistServiceBuilder.java     |   7 +-
 .../mode/fixture/PersistServiceBuilderFixture.java |   4 +-
 .../ClusterMetaDataManagerPersistService.java      |  62 +++++++-----
 .../service/ClusterPersistServiceBuilder.java      |   6 +-
 .../StandaloneMetaDataManagerPersistService.java   | 106 +++++++++++----------
 .../service/StandalonePersistServiceBuilder.java   |   6 +-
 12 files changed, 187 insertions(+), 121 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 9e2cc323c01..8c90ad0c660 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -79,9 +79,9 @@ public final class ContextManager implements AutoCloseable {
     public ContextManager(final MetaDataContexts metaDataContexts, final 
ComputeNodeInstanceContext computeNodeInstanceContext, final PersistRepository 
repository) {
         this.metaDataContexts = new AtomicReference<>(metaDataContexts);
         this.computeNodeInstanceContext = computeNodeInstanceContext;
-        persistServiceFacade = new PersistServiceFacade(repository, 
computeNodeInstanceContext.getModeConfiguration(), this);
+        metaDataContextManager = new 
MetaDataContextManager(this.metaDataContexts, computeNodeInstanceContext, 
repository);
+        persistServiceFacade = new PersistServiceFacade(repository, 
computeNodeInstanceContext.getModeConfiguration(), metaDataContextManager);
         stateContext = new 
StateContext(persistServiceFacade.getStatePersistService().loadClusterState().orElse(ClusterState.OK));
-        metaDataContextManager = new 
MetaDataContextManager(this.metaDataContexts, computeNodeInstanceContext, 
persistServiceFacade);
         executorEngine = 
ExecutorEngine.createExecutorEngineWithSize(metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.KERNEL_EXECUTOR_SIZE));
         for (ContextManagerLifecycleListener each : 
ShardingSphereServiceLoader.getServiceInstances(ContextManagerLifecycleListener.class))
 {
             each.onInitialized(this);
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
index 0945f7ebe6e..22ebe674dc2 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
@@ -19,12 +19,15 @@ package org.apache.shardingsphere.mode.metadata;
 
 import lombok.Getter;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.metadata.manager.ConfigurationManager;
 import org.apache.shardingsphere.mode.metadata.manager.ResourceMetaDataManager;
 import org.apache.shardingsphere.mode.metadata.manager.ResourceSwitchManager;
 import org.apache.shardingsphere.mode.metadata.manager.RuleItemManager;
 import 
org.apache.shardingsphere.mode.metadata.manager.ShardingSphereDatabaseManager;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -34,6 +37,8 @@ import java.util.concurrent.atomic.AtomicReference;
 @Getter
 public class MetaDataContextManager {
     
+    private final AtomicReference<MetaDataContexts> metaDataContexts;
+    
     private final ShardingSphereDatabaseManager databaseManager;
     
     private final ConfigurationManager configurationManager;
@@ -44,12 +49,37 @@ public class MetaDataContextManager {
     
     private final ResourceSwitchManager resourceSwitchManager;
     
+    private final MetaDataPersistService metaDataPersistService;
+    
     public MetaDataContextManager(final AtomicReference<MetaDataContexts> 
metaDataContexts, final ComputeNodeInstanceContext computeNodeInstanceContext,
-                                  final PersistServiceFacade 
persistServiceFacade) {
+                                  final PersistRepository repository) {
+        this.metaDataContexts = metaDataContexts;
         resourceSwitchManager = new ResourceSwitchManager();
         databaseManager = new ShardingSphereDatabaseManager(metaDataContexts);
-        configurationManager = new ConfigurationManager(metaDataContexts, 
computeNodeInstanceContext, persistServiceFacade, resourceSwitchManager);
-        resourceMetaDataManager = new 
ResourceMetaDataManager(metaDataContexts, persistServiceFacade);
-        ruleItemManager = new RuleItemManager(metaDataContexts, 
persistServiceFacade, configurationManager);
+        configurationManager = new ConfigurationManager(metaDataContexts, 
computeNodeInstanceContext, repository, resourceSwitchManager);
+        resourceMetaDataManager = new 
ResourceMetaDataManager(metaDataContexts, repository);
+        ruleItemManager = new RuleItemManager(metaDataContexts, repository, 
configurationManager);
+        metaDataPersistService = new MetaDataPersistService(repository);
+    }
+    
+    /**
+     * Delete schema names.
+     *
+     * @param databaseName database name
+     * @param reloadDatabase reload database
+     * @param currentDatabase current database
+     */
+    public void deletedSchemaNames(final String databaseName, final 
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase 
currentDatabase) {
+        
GenericSchemaManager.getToBeDeletedSchemaNames(reloadDatabase.getSchemas(), 
currentDatabase.getSchemas()).keySet()
+                .forEach(each -> 
metaDataPersistService.getDatabaseMetaDataService().dropSchema(databaseName, 
each));
+    }
+    
+    /**
+     * Renew meta data contexts.
+     *
+     * @param metaDataContexts meta data contexts
+     */
+    public void renewMetaDataContexts(final MetaDataContexts metaDataContexts) 
{
+        this.metaDataContexts.set(metaDataContexts);
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
index 6e0c4139b9f..f12b63963a9 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.mode.metadata.manager;
 
-import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
@@ -46,7 +45,7 @@ import 
org.apache.shardingsphere.metadata.factory.InternalMetaDataFactory;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
 import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
 import org.apache.shardingsphere.transaction.rule.TransactionRule;
 
@@ -67,7 +66,6 @@ import java.util.stream.Collectors;
 /**
  * Configuration context manager.
  */
-@RequiredArgsConstructor
 @Slf4j
 public final class ConfigurationManager {
     
@@ -75,10 +73,18 @@ public final class ConfigurationManager {
     
     private final ComputeNodeInstanceContext computeNodeInstanceContext;
     
-    private final PersistServiceFacade persistServiceFacade;
-    
     private final ResourceSwitchManager resourceSwitchManager;
     
+    private final MetaDataPersistService metaDataPersistService;
+    
+    public ConfigurationManager(final AtomicReference<MetaDataContexts> 
metaDataContexts, final ComputeNodeInstanceContext computeNodeInstanceContext,
+                                final PersistRepository repository, final 
ResourceSwitchManager resourceSwitchManager) {
+        this.metaDataContexts = metaDataContexts;
+        this.computeNodeInstanceContext = computeNodeInstanceContext;
+        this.resourceSwitchManager = resourceSwitchManager;
+        metaDataPersistService = new MetaDataPersistService(repository);
+    }
+    
     /**
      * Register storage unit.
      *
@@ -132,7 +138,7 @@ public final class ConfigurationManager {
         MetaDataContexts reloadMetaDataContexts = 
createMetaDataContexts(databaseName, false, switchingResource, null);
         persistSchemaMetaData(databaseName, reloadMetaDataContexts, 
isDropConfig);
         
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
-                .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
persistServiceFacade.getMetaDataPersistService().getShardingSphereDataPersistService()
+                .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
                         .persist(databaseName, schemaName, schemaData, 
metaDataContexts.get().getMetaData().getDatabases())));
         alterSchemaMetaData(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName), 
metaDataContexts.get().getMetaData().getDatabase(databaseName), isDropConfig);
         metaDataContexts.set(reloadMetaDataContexts);
@@ -142,10 +148,10 @@ public final class ConfigurationManager {
     
     private void persistSchemaMetaData(final String databaseName, final 
MetaDataContexts reloadMetaDataContexts, final boolean isDropConfig) {
         if (isDropConfig) {
-            
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> 
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService()
+            
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> metaDataPersistService.getDatabaseMetaDataService()
                     
.persistByDropConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
         } else {
-            
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> 
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService()
+            
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> metaDataPersistService.getDatabaseMetaDataService()
                     
.persistByAlterConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
         }
     }
@@ -229,11 +235,11 @@ public final class ConfigurationManager {
         Map<String, ShardingSphereSchema> toBeAlterSchemas = 
GenericSchemaManager.getToBeDeletedTablesBySchemas(reloadDatabase.getSchemas(), 
currentDatabase.getSchemas());
         Map<String, ShardingSphereSchema> toBeAddedSchemas = 
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase.getSchemas(), 
currentDatabase.getSchemas());
         if (isDropConfig) {
-            toBeAddedSchemas.forEach((key, value) -> 
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().persistByDropConfiguration(databaseName,
 key, value));
+            toBeAddedSchemas.forEach((key, value) -> 
metaDataPersistService.getDatabaseMetaDataService().persistByDropConfiguration(databaseName,
 key, value));
         } else {
-            toBeAddedSchemas.forEach((key, value) -> 
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
 key, value));
+            toBeAddedSchemas.forEach((key, value) -> 
metaDataPersistService.getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
 key, value));
         }
-        toBeAlterSchemas.forEach((key, value) -> 
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().delete(databaseName,
 key, value));
+        toBeAlterSchemas.forEach((key, value) -> 
metaDataPersistService.getDatabaseMetaDataService().delete(databaseName, key, 
value));
     }
     
     /**
@@ -315,7 +321,7 @@ public final class ConfigurationManager {
                 : ruleConfigs;
         DatabaseConfiguration toBeCreatedDatabaseConfig = 
getDatabaseConfiguration(effectiveResourceMetaData, switchingResource, 
toBeCreatedRuleConfigs);
         ShardingSphereDatabase changedDatabase = 
createChangedDatabase(metaDataContexts.get().getMetaData().getDatabase(databaseName).getName(),
 internalLoadMetaData,
-                persistServiceFacade.getMetaDataPersistService(), 
toBeCreatedDatabaseConfig, metaDataContexts.get().getMetaData().getProps(), 
computeNodeInstanceContext);
+                metaDataPersistService, toBeCreatedDatabaseConfig, 
metaDataContexts.get().getMetaData().getProps(), computeNodeInstanceContext);
         Map<String, ShardingSphereDatabase> result = new 
LinkedHashMap<>(metaDataContexts.get().getMetaData().getDatabases());
         result.put(databaseName.toLowerCase(), changedDatabase);
         return result;
@@ -361,7 +367,7 @@ public final class ConfigurationManager {
     public Map<String, ShardingSphereDatabase> newShardingSphereDatabase(final 
ShardingSphereDatabase originalDatabase) {
         return 
Collections.singletonMap(originalDatabase.getName().toLowerCase(), new 
ShardingSphereDatabase(originalDatabase.getName(),
                 originalDatabase.getProtocolType(), 
originalDatabase.getResourceMetaData(), originalDatabase.getRuleMetaData(),
-                
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().loadSchemas(originalDatabase.getName())));
+                
metaDataPersistService.getDatabaseMetaDataService().loadSchemas(originalDatabase.getName())));
     }
     
     /**
@@ -409,6 +415,6 @@ public final class ConfigurationManager {
     }
     
     private MetaDataContexts newMetaDataContexts(final ShardingSphereMetaData 
metaData) {
-        return 
MetaDataContextsFactory.create(persistServiceFacade.getMetaDataPersistService(),
 metaData);
+        return MetaDataContextsFactory.create(metaDataPersistService, 
metaData);
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
index 59f4eb8066b..63ecef5468c 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.mode.metadata.manager;
 
 import com.google.common.base.Strings;
-import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.database.DatabaseTypeEngine;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -29,10 +28,11 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
 import 
org.apache.shardingsphere.infra.rule.scope.GlobalRule.GlobalRuleChangedType;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 import java.util.Collections;
 import java.util.Optional;
@@ -41,12 +41,16 @@ import java.util.concurrent.atomic.AtomicReference;
 /**
  * Resource meta data manager.
  */
-@RequiredArgsConstructor
 public final class ResourceMetaDataManager {
     
     private final AtomicReference<MetaDataContexts> metaDataContexts;
     
-    private final PersistServiceFacade persistServiceFacade;
+    private final MetaDataPersistService metaDataPersistService;
+    
+    public ResourceMetaDataManager(final AtomicReference<MetaDataContexts> 
metaDataContexts, final PersistRepository repository) {
+        this.metaDataContexts = metaDataContexts;
+        metaDataPersistService = new MetaDataPersistService(repository);
+    }
     
     /**
      * Add database.
@@ -59,7 +63,7 @@ public final class ResourceMetaDataManager {
         }
         DatabaseType protocolType = 
DatabaseTypeEngine.getProtocolType(Collections.emptyMap(), 
metaDataContexts.get().getMetaData().getProps());
         metaDataContexts.get().getMetaData().addDatabase(databaseName, 
protocolType, metaDataContexts.get().getMetaData().getProps());
-        
metaDataContexts.set(MetaDataContextsFactory.create(persistServiceFacade.getMetaDataPersistService(),
 metaDataContexts.get().getMetaData()));
+        
metaDataContexts.set(MetaDataContextsFactory.create(metaDataPersistService, 
metaDataContexts.get().getMetaData()));
     }
     
     /**
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
index 0ca59ecb096..5f804f01488 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
@@ -22,8 +22,9 @@ import 
org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.rule.event.rule.alter.AlterRuleItemEvent;
 import org.apache.shardingsphere.infra.rule.event.rule.drop.DropRuleItemEvent;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
 import 
org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
 
 import java.util.concurrent.atomic.AtomicReference;
@@ -36,10 +37,16 @@ public class RuleItemManager {
     
     private final AtomicReference<MetaDataContexts> metaDataContexts;
     
-    private final PersistServiceFacade persistServiceFacade;
-    
     private final ConfigurationManager configurationManager;
     
+    private final MetaDataPersistService metaDataPersistService;
+    
+    public RuleItemManager(final AtomicReference<MetaDataContexts> 
metaDataContexts, final PersistRepository repository, final 
ConfigurationManager configurationManager) {
+        this.metaDataContexts = metaDataContexts;
+        this.configurationManager = configurationManager;
+        metaDataPersistService = new MetaDataPersistService(repository);
+    }
+    
     /**
      * Alter with rule item.
      *
@@ -47,12 +54,12 @@ public class RuleItemManager {
      */
     @SuppressWarnings({"rawtypes", "unchecked", "unused"})
     public void alterRuleItem(final AlterRuleItemEvent event) {
-        if 
(!event.getActiveVersion().equals(persistServiceFacade.getMetaDataPersistService().getMetaDataVersionPersistService()
+        if 
(!event.getActiveVersion().equals(metaDataPersistService.getMetaDataVersionPersistService()
                 .getActiveVersionByFullPath(event.getActiveVersionKey()))) {
             return;
         }
         RuleItemConfigurationChangedProcessor processor = 
TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class, 
event.getType());
-        String yamlContent = 
persistServiceFacade.getMetaDataPersistService().getMetaDataVersionPersistService()
+        String yamlContent = 
metaDataPersistService.getMetaDataVersionPersistService()
                 .getVersionPathByActiveVersion(event.getActiveVersionKey(), 
event.getActiveVersion());
         String databaseName = event.getDatabaseName();
         RuleConfiguration currentRuleConfig = 
processor.findRuleConfiguration(metaDataContexts.get().getMetaData().getDatabase(databaseName));
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
index 4bc87d754a4..b8ff974d472 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
@@ -21,13 +21,13 @@ import lombok.Getter;
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import 
org.apache.shardingsphere.mode.service.persist.ComputeNodePersistService;
+import 
org.apache.shardingsphere.mode.service.persist.ListenerAssistedPersistService;
 import 
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
 import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
 import 
org.apache.shardingsphere.mode.service.persist.QualifiedDataSourceStatePersistService;
-import 
org.apache.shardingsphere.mode.service.persist.ListenerAssistedPersistService;
 import 
org.apache.shardingsphere.mode.service.pojo.ShardingSphereSchemaDataAlteredPOJO;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
 import org.apache.shardingsphere.mode.state.StatePersistService;
@@ -54,14 +54,14 @@ public final class PersistServiceFacade {
     
     private final QualifiedDataSourceStatePersistService 
qualifiedDataSourceStatePersistService;
     
-    public PersistServiceFacade(final PersistRepository repository, final 
ModeConfiguration modeConfiguration, final ContextManager contextManager) {
+    public PersistServiceFacade(final PersistRepository repository, final 
ModeConfiguration modeConfiguration, final MetaDataContextManager 
metaDataContextManager) {
         this.repository = repository;
         metaDataPersistService = new MetaDataPersistService(repository);
         computeNodePersistService = new ComputeNodePersistService(repository);
         statePersistService = new StatePersistService(repository);
         qualifiedDataSourceStatePersistService = new 
QualifiedDataSourceStatePersistService(repository);
         PersistServiceBuilder persistServiceBuilder = 
TypedSPILoader.getService(PersistServiceBuilder.class, 
modeConfiguration.getType());
-        metaDataManagerPersistService = 
persistServiceBuilder.buildMetaDataManagerPersistService(contextManager);
+        metaDataManagerPersistService = 
persistServiceBuilder.buildMetaDataManagerPersistService(repository, 
metaDataContextManager);
         processPersistService = 
persistServiceBuilder.buildProcessPersistService(repository);
         listenerAssistedPersistService = new 
ListenerAssistedPersistService(repository);
     }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
index 53abde32c4c..72b5da561c7 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.mode.service.persist;
 
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 /**
@@ -29,10 +29,11 @@ public interface PersistServiceBuilder extends TypedSPI {
     /**
      * Build meta data manager persist service.
      *
-     * @param contextManager context manager
+     * @param repository persist repository
+     * @param metaDataContextManager meta data context manager
      * @return meta data manager persist service
      */
-    MetaDataManagerPersistService 
buildMetaDataManagerPersistService(ContextManager contextManager);
+    MetaDataManagerPersistService 
buildMetaDataManagerPersistService(PersistRepository repository, 
MetaDataContextManager metaDataContextManager);
     
     /**
      * Build process persist service.
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
index a400e9718e5..126471a0796 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.mode.fixture;
 
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import 
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
 import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
@@ -26,7 +26,7 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
 public final class PersistServiceBuilderFixture implements 
PersistServiceBuilder {
     
     @Override
-    public MetaDataManagerPersistService 
buildMetaDataManagerPersistService(final ContextManager contextManager) {
+    public MetaDataManagerPersistService 
buildMetaDataManagerPersistService(final PersistRepository repository, final 
MetaDataContextManager metaDataContextManager) {
         return null;
     }
     
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
index e9a9fcc9962..65e5a06d863 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
@@ -26,12 +26,15 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.config.database.DataSourceUnitPersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataPersistService;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import org.apache.shardingsphere.mode.service.enums.ListenerAssistedEnum;
+import 
org.apache.shardingsphere.mode.service.persist.ListenerAssistedPersistService;
 import 
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.service.pojo.ListenerAssistedPOJO;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
 import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
 
 import java.util.Collection;
@@ -46,33 +49,42 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public final class ClusterMetaDataManagerPersistService implements 
MetaDataManagerPersistService {
     
-    private final ContextManager contextManager;
+    private final MetaDataPersistService metaDataPersistService;
+    
+    private final ListenerAssistedPersistService 
listenerAssistedPersistService;
+    
+    private final MetaDataContextManager metaDataContextManager;
+    
+    public ClusterMetaDataManagerPersistService(final PersistRepository 
repository, final MetaDataContextManager metaDataContextManager) {
+        metaDataPersistService = new MetaDataPersistService(repository);
+        listenerAssistedPersistService = new 
ListenerAssistedPersistService(repository);
+        this.metaDataContextManager = metaDataContextManager;
+    }
     
     @Override
     public void createDatabase(final String databaseName) {
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().addDatabase(databaseName);
-        
contextManager.getPersistServiceFacade().getListenerAssistedPersistService().persistDatabaseNameListenerAssisted(new
 ListenerAssistedPOJO(databaseName, ListenerAssistedEnum.CREATE_DATABASE));
+        
metaDataPersistService.getDatabaseMetaDataService().addDatabase(databaseName);
+        listenerAssistedPersistService.persistDatabaseNameListenerAssisted(new 
ListenerAssistedPOJO(databaseName, ListenerAssistedEnum.CREATE_DATABASE));
     }
     
     @Override
     public void dropDatabase(final String databaseName) {
-        String droppedDatabaseName = 
contextManager.getDatabase(databaseName).getName();
-        
contextManager.getPersistServiceFacade().getListenerAssistedPersistService()
-                .persistDatabaseNameListenerAssisted(new 
ListenerAssistedPOJO(droppedDatabaseName, ListenerAssistedEnum.DROP_DATABASE));
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().dropDatabase(droppedDatabaseName);
+        String droppedDatabaseName = 
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName();
+        listenerAssistedPersistService.persistDatabaseNameListenerAssisted(new 
ListenerAssistedPOJO(droppedDatabaseName, ListenerAssistedEnum.DROP_DATABASE));
+        
metaDataPersistService.getDatabaseMetaDataService().dropDatabase(droppedDatabaseName);
     }
     
     @Override
     public void createSchema(final String databaseName, final String 
schemaName) {
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().addSchema(databaseName,
 schemaName);
+        
metaDataPersistService.getDatabaseMetaDataService().addSchema(databaseName, 
schemaName);
     }
     
     @Override
     public void alterSchema(final AlterSchemaPOJO alterSchemaPOJO) {
         String databaseName = alterSchemaPOJO.getDatabaseName();
         String schemaName = alterSchemaPOJO.getSchemaName();
-        ShardingSphereSchema schema = 
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchema(schemaName);
-        DatabaseMetaDataPersistService databaseMetaDataService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+        ShardingSphereSchema schema = 
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getSchema(schemaName);
+        DatabaseMetaDataPersistService databaseMetaDataService = 
metaDataPersistService.getDatabaseMetaDataService();
         databaseMetaDataService.persistByAlterConfiguration(databaseName, 
alterSchemaPOJO.getRenameSchemaName(), schema);
         
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, 
alterSchemaPOJO.getRenameSchemaName(), schema.getViews());
         databaseMetaDataService.dropSchema(databaseName, schemaName);
@@ -80,7 +92,7 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     
     @Override
     public void dropSchema(final String databaseName, final Collection<String> 
schemaNames) {
-        DatabaseMetaDataPersistService databaseMetaDataService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+        DatabaseMetaDataPersistService databaseMetaDataService = 
metaDataPersistService.getDatabaseMetaDataService();
         schemaNames.forEach(each -> 
databaseMetaDataService.dropSchema(databaseName, each));
     }
     
@@ -90,7 +102,7 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
         String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
         Map<String, ShardingSphereTable> tables = 
alterSchemaMetaDataPOJO.getAlteredTables().stream().collect(Collectors.toMap(ShardingSphereTable::getName,
 table -> table));
         Map<String, ShardingSphereView> views = 
alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName,
 view -> view));
-        DatabaseMetaDataPersistService databaseMetaDataService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+        DatabaseMetaDataPersistService databaseMetaDataService = 
metaDataPersistService.getDatabaseMetaDataService();
         
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, 
schemaName, tables);
         
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, 
schemaName, views);
         alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> 
databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, 
schemaName, each));
@@ -99,39 +111,39 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     
     @Override
     public void registerStorageUnits(final String databaseName, final 
Map<String, DataSourcePoolProperties> toBeRegisteredProps) {
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().persistConfigurations(databaseName,
 toBeRegisteredProps);
+        
metaDataPersistService.getDataSourceUnitService().persistConfigurations(databaseName,
 toBeRegisteredProps);
     }
     
     @Override
     public void alterStorageUnits(final String databaseName, final Map<String, 
DataSourcePoolProperties> toBeUpdatedProps) {
-        DataSourceUnitPersistService dataSourceService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService();
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
+        DataSourceUnitPersistService dataSourceService = 
metaDataPersistService.getDataSourceUnitService();
+        metaDataPersistService.getMetaDataVersionPersistService()
                 
.switchActiveVersion(dataSourceService.persistConfigurations(databaseName, 
toBeUpdatedProps));
     }
     
     @Override
     public void unregisterStorageUnits(final String databaseName, final 
Collection<String> toBeDroppedStorageUnitNames) {
         for (String each : getToBeDroppedResourceNames(databaseName, 
toBeDroppedStorageUnitNames)) {
-            
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().delete(databaseName,
 each);
+            
metaDataPersistService.getDataSourceUnitService().delete(databaseName, each);
         }
     }
     
     private Collection<String> getToBeDroppedResourceNames(final String 
databaseName, final Collection<String> toBeDroppedResourceNames) {
-        Map<String, DataSourcePoolProperties> propsMap = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().load(databaseName);
+        Map<String, DataSourcePoolProperties> propsMap = 
metaDataPersistService.getDataSourceUnitService().load(databaseName);
         return 
toBeDroppedResourceNames.stream().filter(propsMap::containsKey).collect(Collectors.toList());
     }
     
     @Override
     public void alterSingleRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
         ruleConfigs.removeIf(each -> 
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
-                
.switchActiveVersion(contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().persistConfigurations(databaseName,
 ruleConfigs));
+        metaDataPersistService.getMetaDataVersionPersistService()
+                
.switchActiveVersion(metaDataPersistService.getDatabaseRulePersistService().persistConfigurations(databaseName,
 ruleConfigs));
     }
     
     @Override
     public Collection<MetaDataVersion> alterRuleConfiguration(final String 
databaseName, final RuleConfiguration toBeAlteredRuleConfig) {
         if (null != toBeAlteredRuleConfig) {
-            return 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
+            return metaDataPersistService.getDatabaseRulePersistService()
                     .persistConfigurations(databaseName, 
Collections.singleton(toBeAlteredRuleConfig));
         }
         return Collections.emptyList();
@@ -140,22 +152,22 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     @Override
     public void removeRuleConfigurationItem(final String databaseName, final 
RuleConfiguration toBeRemovedRuleConfig) {
         if (null != toBeRemovedRuleConfig) {
-            
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().deleteConfigurations(databaseName,
 Collections.singleton(toBeRemovedRuleConfig));
+            
metaDataPersistService.getDatabaseRulePersistService().deleteConfigurations(databaseName,
 Collections.singleton(toBeRemovedRuleConfig));
         }
     }
     
     @Override
     public void removeRuleConfiguration(final String databaseName, final 
String ruleName) {
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().delete(databaseName,
 ruleName);
+        
metaDataPersistService.getDatabaseRulePersistService().delete(databaseName, 
ruleName);
     }
     
     @Override
     public void alterGlobalRuleConfiguration(final RuleConfiguration 
toBeAlteredRuleConfig) {
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
+        
metaDataPersistService.getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
     }
     
     @Override
     public void alterProperties(final Properties props) {
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getPropsService().persist(props);
+        metaDataPersistService.getPropsService().persist(props);
     }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
index dc06995b15e..7357061c023 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.mode.manager.cluster.service;
 
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import 
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
 import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
@@ -29,8 +29,8 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
 public final class ClusterPersistServiceBuilder implements 
PersistServiceBuilder {
     
     @Override
-    public MetaDataManagerPersistService 
buildMetaDataManagerPersistService(final ContextManager contextManager) {
-        return new ClusterMetaDataManagerPersistService(contextManager);
+    public MetaDataManagerPersistService 
buildMetaDataManagerPersistService(final PersistRepository repository, final 
MetaDataContextManager metaDataContextManager) {
+        return new ClusterMetaDataManagerPersistService(repository, 
metaDataContextManager);
     }
     
     @Override
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
index 80e1ece543d..b234f962e49 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
@@ -35,17 +35,19 @@ import 
org.apache.shardingsphere.infra.rule.event.rule.drop.DropRuleItemEvent;
 import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
 import 
org.apache.shardingsphere.infra.rule.scope.GlobalRule.GlobalRuleChangedType;
 import 
org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.config.database.DataSourceUnitPersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataPersistService;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import 
org.apache.shardingsphere.mode.metadata.builder.RuleConfigurationEventBuilder;
 import org.apache.shardingsphere.mode.metadata.manager.ConfigurationManager;
 import org.apache.shardingsphere.mode.metadata.manager.SwitchingResource;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
 import 
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
 import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
 
 import java.sql.SQLException;
@@ -66,44 +68,47 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
     
     private final RuleConfigurationEventBuilder ruleConfigurationEventBuilder 
= new RuleConfigurationEventBuilder();
     
-    private final ContextManager contextManager;
+    private final MetaDataPersistService metaDataPersistService;
     
-    public StandaloneMetaDataManagerPersistService(final ContextManager 
contextManager) {
-        this.contextManager = contextManager;
+    private final MetaDataContextManager metaDataContextManager;
+    
+    public StandaloneMetaDataManagerPersistService(final PersistRepository 
repository, final MetaDataContextManager metaDataContextManager) {
+        metaDataPersistService = new MetaDataPersistService(repository);
+        this.metaDataContextManager = metaDataContextManager;
     }
     
     @Override
     public void createDatabase(final String databaseName) {
-        
contextManager.getMetaDataContextManager().getResourceMetaDataManager().addDatabase(databaseName);
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().addDatabase(databaseName);
+        
metaDataContextManager.getResourceMetaDataManager().addDatabase(databaseName);
+        
metaDataPersistService.getDatabaseMetaDataService().addDatabase(databaseName);
         clearServiceCache();
     }
     
     @Override
     public void dropDatabase(final String databaseName) {
-        
contextManager.getMetaDataContextManager().getResourceMetaDataManager().dropDatabase(databaseName);
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().dropDatabase(databaseName);
+        
metaDataContextManager.getResourceMetaDataManager().dropDatabase(databaseName);
+        
metaDataPersistService.getDatabaseMetaDataService().dropDatabase(databaseName);
         clearServiceCache();
     }
     
     @Override
     public void createSchema(final String databaseName, final String 
schemaName) {
         ShardingSphereSchema schema = new ShardingSphereSchema();
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().getMetaData();
+        ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().get().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         database.addSchema(schemaName, schema);
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
 schemaName, schema);
+        
metaDataPersistService.getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
 schemaName, schema);
     }
     
     @Override
     public void alterSchema(final AlterSchemaPOJO alterSchemaPOJO) {
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().getMetaData();
+        ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().get().getMetaData();
         ShardingSphereDatabase database = 
metaData.getDatabase(alterSchemaPOJO.getDatabaseName());
         putSchemaMetaData(database, alterSchemaPOJO.getSchemaName(), 
alterSchemaPOJO.getRenameSchemaName(), 
alterSchemaPOJO.getLogicDataSourceName());
         removeSchemaMetaData(database, alterSchemaPOJO.getSchemaName());
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        DatabaseMetaDataPersistService databaseMetaDataService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+        DatabaseMetaDataPersistService databaseMetaDataService = 
metaDataPersistService.getDatabaseMetaDataService();
         
databaseMetaDataService.persistByAlterConfiguration(alterSchemaPOJO.getDatabaseName(),
 alterSchemaPOJO.getRenameSchemaName(), 
database.getSchema(alterSchemaPOJO.getRenameSchemaName()));
         
databaseMetaDataService.getViewMetaDataPersistService().persist(alterSchemaPOJO.getDatabaseName(),
 alterSchemaPOJO.getRenameSchemaName(),
                 
database.getSchema(alterSchemaPOJO.getRenameSchemaName()).getViews());
@@ -185,7 +190,7 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
     public void dropSchema(final String databaseName, final Collection<String> 
schemaNames) {
         Collection<String> tobeRemovedTables = new LinkedList<>();
         Collection<String> tobeRemovedSchemas = new LinkedList<>();
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().getMetaData();
+        ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().get().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         for (String each : schemaNames) {
             ShardingSphereSchema schema = new 
ShardingSphereSchema(database.getSchema(each).getTables(), 
database.getSchema(each).getViews());
@@ -201,14 +206,14 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     public void alterSchemaMetaData(final AlterSchemaMetaDataPOJO 
alterSchemaMetaDataPOJO) {
         String databaseName = alterSchemaMetaDataPOJO.getDatabaseName();
         String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().getMetaData();
+        ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().get().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         Map<String, ShardingSphereTable> tables = 
alterSchemaMetaDataPOJO.getAlteredTables().stream().collect(Collectors.toMap(ShardingSphereTable::getName,
 table -> table));
         Map<String, ShardingSphereView> views = 
alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName,
 view -> view));
         addDataNode(database, 
alterSchemaMetaDataPOJO.getLogicDataSourceName(), schemaName, tables, views);
         removeDataNode(database, schemaName, 
alterSchemaMetaDataPOJO.getDroppedTables(), 
alterSchemaMetaDataPOJO.getDroppedViews());
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        DatabaseMetaDataPersistService databaseMetaDataService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+        DatabaseMetaDataPersistService databaseMetaDataService = 
metaDataPersistService.getDatabaseMetaDataService();
         
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, 
schemaName, tables);
         
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, 
schemaName, views);
         alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> 
databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, 
schemaName, each));
@@ -217,31 +222,31 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     
     @Override
     public void registerStorageUnits(final String databaseName, final 
Map<String, DataSourcePoolProperties> toBeRegisteredProps) throws SQLException {
-        SwitchingResource switchingResource = 
contextManager.getMetaDataContextManager().getResourceSwitchManager().registerStorageUnit(contextManager.getMetaDataContexts()
+        SwitchingResource switchingResource = 
metaDataContextManager.getResourceSwitchManager().registerStorageUnit(metaDataContextManager.getMetaDataContexts().get()
                 
.getMetaData().getDatabase(databaseName).getResourceMetaData(), 
toBeRegisteredProps);
-        
contextManager.getMetaDataContexts().getMetaData().getDatabases().putAll(contextManager.getMetaDataContextManager().getConfigurationManager()
+        
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases().putAll(metaDataContextManager.getConfigurationManager()
                 .createChangedDatabases(databaseName, false, 
switchingResource, null));
-        
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
-                .forEach(each -> ((GlobalRule) 
each).refresh(contextManager.getMetaDataContexts().getMetaData().getDatabases(),
 GlobalRuleChangedType.DATABASE_CHANGED));
-        
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchemas()
-                .forEach((schemaName, schema) -> 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService()
-                        
.persistByAlterConfiguration(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
-        DataSourceUnitPersistService dataSourceService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService();
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
+        
metaDataContextManager.getMetaDataContexts().get().getMetaData().getGlobalRuleMetaData().getRules()
+                .forEach(each -> ((GlobalRule) 
each).refresh(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases(),
 GlobalRuleChangedType.DATABASE_CHANGED));
+        
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getSchemas()
+                .forEach((schemaName, schema) -> 
metaDataPersistService.getDatabaseMetaDataService()
+                        
.persistByAlterConfiguration(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
+        DataSourceUnitPersistService dataSourceService = 
metaDataPersistService.getDataSourceUnitService();
+        metaDataPersistService.getMetaDataVersionPersistService()
                 
.switchActiveVersion(dataSourceService.persistConfigurations(databaseName, 
toBeRegisteredProps));
         clearServiceCache();
     }
     
     @Override
     public void alterStorageUnits(final String databaseName, final Map<String, 
DataSourcePoolProperties> toBeUpdatedProps) throws SQLException {
-        SwitchingResource switchingResource = 
contextManager.getMetaDataContextManager().getResourceSwitchManager().alterStorageUnit(contextManager.getMetaDataContexts().getMetaData()
+        SwitchingResource switchingResource = 
metaDataContextManager.getResourceSwitchManager().alterStorageUnit(metaDataContextManager.getMetaDataContexts().get().getMetaData()
                 .getDatabase(databaseName).getResourceMetaData(), 
toBeUpdatedProps);
-        
contextManager.getMetaDataContexts().getMetaData().getDatabases().putAll(contextManager.getMetaDataContextManager().getConfigurationManager()
+        
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases().putAll(metaDataContextManager.getConfigurationManager()
                 .createChangedDatabases(databaseName, true, switchingResource, 
null));
-        
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
-                .forEach(each -> ((GlobalRule) 
each).refresh(contextManager.getMetaDataContexts().getMetaData().getDatabases(),
 GlobalRuleChangedType.DATABASE_CHANGED));
-        DataSourceUnitPersistService dataSourceService = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService();
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
+        
metaDataContextManager.getMetaDataContexts().get().getMetaData().getGlobalRuleMetaData().getRules()
+                .forEach(each -> ((GlobalRule) 
each).refresh(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases(),
 GlobalRuleChangedType.DATABASE_CHANGED));
+        DataSourceUnitPersistService dataSourceService = 
metaDataPersistService.getDataSourceUnitService();
+        metaDataPersistService.getMetaDataVersionPersistService()
                 
.switchActiveVersion(dataSourceService.persistConfigurations(databaseName, 
toBeUpdatedProps));
         switchingResource.closeStaleDataSources();
         clearServiceCache();
@@ -249,14 +254,15 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     
     @Override
     public void unregisterStorageUnits(final String databaseName, final 
Collection<String> toBeDroppedStorageUnitNames) throws SQLException {
-        SwitchingResource switchingResource = 
contextManager.getMetaDataContextManager().getResourceSwitchManager().unregisterStorageUnit(contextManager.getMetaDataContexts().getMetaData()
+        SwitchingResource switchingResource = 
metaDataContextManager.getResourceSwitchManager().unregisterStorageUnit(metaDataContextManager.getMetaDataContexts().get().getMetaData()
                 .getDatabase(databaseName).getResourceMetaData(), 
toBeDroppedStorageUnitNames);
-        ConfigurationManager configurationManager = 
contextManager.getMetaDataContextManager().getConfigurationManager();
+        ConfigurationManager configurationManager = 
metaDataContextManager.getConfigurationManager();
         MetaDataContexts reloadMetaDataContexts = 
configurationManager.createMetaDataContexts(databaseName, false, 
switchingResource, null);
         configurationManager.alterSchemaMetaData(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-                
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName), 
true);
-        contextManager.deletedSchemaNames(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName), 
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName));
-        contextManager.renewMetaDataContexts(reloadMetaDataContexts);
+                
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName),
 true);
+        metaDataContextManager.deletedSchemaNames(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+                
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName));
+        metaDataContextManager.renewMetaDataContexts(reloadMetaDataContexts);
         switchingResource.closeStaleDataSources();
         clearServiceCache();
     }
@@ -264,23 +270,23 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     @Override
     public void alterSingleRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
         ruleConfigs.removeIf(each -> 
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
-        Collection<MetaDataVersion> metaDataVersions = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
-                
.persistConfigurations(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
 ruleConfigs);
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
-        
contextManager.getMetaDataContextManager().getConfigurationManager().alterRuleConfiguration(databaseName,
 ruleConfigs.iterator().next());
+        Collection<MetaDataVersion> metaDataVersions = 
metaDataPersistService.getDatabaseRulePersistService()
+                
.persistConfigurations(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName(),
 ruleConfigs);
+        
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
+        
metaDataContextManager.getConfigurationManager().alterRuleConfiguration(databaseName,
 ruleConfigs.iterator().next());
         clearServiceCache();
     }
     
     @Override
     public Collection<MetaDataVersion> alterRuleConfiguration(final String 
databaseName, final RuleConfiguration toBeAlteredRuleConfig) {
         if (null != toBeAlteredRuleConfig) {
-            Collection<MetaDataVersion> metaDataVersions = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
-                    
.persistConfigurations(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
 Collections.singletonList(toBeAlteredRuleConfig));
-            
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
+            Collection<MetaDataVersion> metaDataVersions = 
metaDataPersistService.getDatabaseRulePersistService()
+                    
.persistConfigurations(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName(),
 Collections.singletonList(toBeAlteredRuleConfig));
+            
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
             for (MetaDataVersion each : metaDataVersions) {
                 Optional<GovernanceEvent> ruleItemEvent = 
buildAlterRuleItemEvent(databaseName, each, Type.UPDATED);
                 if (ruleItemEvent.isPresent() && ruleItemEvent.get() 
instanceof AlterRuleItemEvent) {
-                    
contextManager.getMetaDataContextManager().getRuleItemManager().alterRuleItem((AlterRuleItemEvent)
 ruleItemEvent.get());
+                    
metaDataContextManager.getRuleItemManager().alterRuleItem((AlterRuleItemEvent) 
ruleItemEvent.get());
                 }
             }
             clearServiceCache();
@@ -295,12 +301,12 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     @Override
     public void removeRuleConfigurationItem(final String databaseName, final 
RuleConfiguration toBeRemovedRuleConfig) {
         if (null != toBeRemovedRuleConfig) {
-            Collection<MetaDataVersion> metaDataVersions = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
+            Collection<MetaDataVersion> metaDataVersions = 
metaDataPersistService.getDatabaseRulePersistService()
                     .deleteConfigurations(databaseName, 
Collections.singleton(toBeRemovedRuleConfig));
             for (MetaDataVersion metaDataVersion : metaDataVersions) {
                 Optional<GovernanceEvent> ruleItemEvent = 
buildAlterRuleItemEvent(databaseName, metaDataVersion, Type.DELETED);
                 if (ruleItemEvent.isPresent() && ruleItemEvent.get() 
instanceof DropRuleItemEvent) {
-                    
contextManager.getMetaDataContextManager().getRuleItemManager().dropRuleItem((DropRuleItemEvent)
 ruleItemEvent.get());
+                    
metaDataContextManager.getRuleItemManager().dropRuleItem((DropRuleItemEvent) 
ruleItemEvent.get());
                 }
             }
             clearServiceCache();
@@ -309,21 +315,21 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     
     @Override
     public void removeRuleConfiguration(final String databaseName, final 
String ruleName) {
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().delete(databaseName,
 ruleName);
+        
metaDataPersistService.getDatabaseRulePersistService().delete(databaseName, 
ruleName);
         clearServiceCache();
     }
     
     @Override
     public void alterGlobalRuleConfiguration(final RuleConfiguration 
toBeAlteredRuleConfig) {
-        
contextManager.getMetaDataContextManager().getConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
+        
metaDataContextManager.getConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
+        
metaDataPersistService.getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
         clearServiceCache();
     }
     
     @Override
     public void alterProperties(final Properties props) {
-        
contextManager.getMetaDataContextManager().getConfigurationManager().alterProperties(props);
-        
contextManager.getPersistServiceFacade().getMetaDataPersistService().getPropsService().persist(props);
+        
metaDataContextManager.getConfigurationManager().alterProperties(props);
+        metaDataPersistService.getPropsService().persist(props);
         clearServiceCache();
     }
     
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
index 1e7e2efff12..f93e83cf8c3 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.mode.manager.standalone.service;
 
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import 
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
 import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
@@ -29,8 +29,8 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
 public final class StandalonePersistServiceBuilder implements 
PersistServiceBuilder {
     
     @Override
-    public MetaDataManagerPersistService 
buildMetaDataManagerPersistService(final ContextManager contextManager) {
-        return new StandaloneMetaDataManagerPersistService(contextManager);
+    public MetaDataManagerPersistService 
buildMetaDataManagerPersistService(final PersistRepository repository, final 
MetaDataContextManager metaDataContextManager) {
+        return new StandaloneMetaDataManagerPersistService(repository, 
metaDataContextManager);
     }
     
     @Override

Reply via email to