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

zhaojinchao 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 d448d8069c9 Remove ModeContextManager (#31366)
d448d8069c9 is described below

commit d448d8069c9af6a3f7a04978dc53d892d2d18fcc
Author: Haoran Meng <[email protected]>
AuthorDate: Thu May 23 18:00:38 2024 +0800

    Remove ModeContextManager (#31366)
    
    * Remove ModeContextManager
    
    * Remove ModeContextManager
---
 .../impl/proxy/ProxyStateExporterTest.java         |   3 +-
 .../PrometheusPluginLifecycleServiceTest.java      |   3 +-
 .../checker/ShardingRouteCacheableCheckerTest.java |   2 +-
 .../infra/instance/ComputeNodeInstanceContext.java |   3 -
 .../infra/instance/mode/ModeContextManager.java    | 152 ----------
 .../instance/ComputeNodeInstanceContextTest.java   |  21 +-
 .../database/type/AlterDatabaseRuleOperator.java   |   8 +-
 .../database/type/CreateDatabaseRuleOperator.java  |   6 +-
 .../database/type/DropDatabaseRuleOperator.java    |  10 +-
 .../global/GlobalRuleDefinitionExecuteEngine.java  |   2 +-
 .../rdl/resource/AlterStorageUnitExecutor.java     |   2 +-
 .../rdl/resource/RegisterStorageUnitExecutor.java  |   2 +-
 .../resource/UnregisterStorageUnitExecutor.java    |   2 +-
 .../UnregisterStorageUnitExecutorTest.java         |  12 +-
 .../driver/executor/DriverJDBCExecutor.java        |  10 +-
 .../metadata/refresher/MetaDataRefreshEngine.java  |   7 +-
 .../mode/metadata/refresher/MetaDataRefresher.java |   6 +-
 .../index/AlterIndexStatementSchemaRefresher.java  |   6 +-
 .../index/CreateIndexStatementSchemaRefresher.java |   6 +-
 .../index/DropIndexStatementSchemaRefresher.java   |   6 +-
 .../AlterSchemaStatementSchemaRefresher.java       |   6 +-
 .../CreateSchemaStatementSchemaRefresher.java      |   6 +-
 .../schema/DropSchemaStatementSchemaRefresher.java |   6 +-
 .../table/AlterTableStatementSchemaRefresher.java  |   6 +-
 .../table/CreateTableStatementSchemaRefresher.java |   8 +-
 .../table/DropTableStatementSchemaRefresher.java   |   8 +-
 .../table/RenameTableStatementSchemaRefresher.java |   6 +-
 .../view/AlterViewStatementSchemaRefresher.java    |   6 +-
 .../view/CreateViewStatementSchemaRefresher.java   |   6 +-
 .../view/DropViewStatementSchemaRefresher.java     |   6 +-
 .../cluster/ClusterContextManagerBuilder.java      |  11 +-
 .../manager/cluster/ClusterModeContextManager.java | 159 ----------
 .../StandaloneContextManagerBuilder.java           |   7 +-
 .../standalone/StandaloneModeContextManager.java   | 332 ---------------------
 .../proxy/backend/connector/DatabaseConnector.java |   2 +-
 .../database/CreateDatabaseBackendHandler.java     |   2 +-
 .../database/DropDatabaseBackendHandler.java       |   2 +-
 .../ral/updatable/ImportMetaDataExecutor.java      |   4 +-
 .../ral/updatable/SetDistVariableExecutor.java     |   2 +-
 .../YamlDatabaseConfigurationImportExecutor.java   |   6 +-
 .../distsql/DistSQLBackendHandlerFactoryTest.java  |   4 +-
 .../ral/queryable/ExportMetaDataExecutorTest.java  |   3 +-
 .../ral/updatable/SetDistVariableExecutorTest.java |   5 +-
 43 files changed, 104 insertions(+), 768 deletions(-)

diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
index 0561aad5db9..74ecdf38802 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import org.apache.shardingsphere.infra.lock.LockContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.state.instance.InstanceStateContext;
@@ -83,7 +82,7 @@ class ProxyStateExporterTest {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         ComputeNodeInstanceContext computeNodeInstanceContext = new 
ComputeNodeInstanceContext(
                 new ComputeNodeInstance(mock(InstanceMetaData.class)), new 
StandaloneWorkerIdGenerator(), new ModeConfiguration("Standalone", null),
-                mock(ModeContextManager.class), mock(LockContext.class), new 
EventBusContext());
+                mock(LockContext.class), new EventBusContext());
         return new ContextManager(metaDataContexts, 
computeNodeInstanceContext);
     }
 }
diff --git 
a/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java
 
b/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java
index ec868b86737..36806776f00 100644
--- 
a/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java
+++ 
b/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import org.apache.shardingsphere.infra.lock.LockContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
@@ -72,7 +71,7 @@ class PrometheusPluginLifecycleServiceTest {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         ComputeNodeInstanceContext computeNodeInstanceContext = new 
ComputeNodeInstanceContext(
                 new ComputeNodeInstance(mock(InstanceMetaData.class)), new 
StandaloneWorkerIdGenerator(), new ModeConfiguration("Standalone", null),
-                mock(ModeContextManager.class), mock(LockContext.class), new 
EventBusContext());
+                mock(LockContext.class), new EventBusContext());
         return new ContextManager(metaDataContexts, 
computeNodeInstanceContext);
     }
 }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
index 4ff51ad2fe6..b13bbf42d1a 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
@@ -108,7 +108,7 @@ class ShardingRouteCacheableCheckerTest {
         ruleConfig.getTables().add(nonCacheableTableSharding);
         ruleConfig.setShardingCache(new ShardingCacheConfiguration(100, new 
ShardingCacheOptionsConfiguration(true, 0, 0)));
         return new ShardingRule(ruleConfig, Maps.of("ds_0", new 
MockedDataSource(), "ds_1", new MockedDataSource()),
-                new 
ComputeNodeInstanceContext(mock(ComputeNodeInstance.class), props -> 0, null, 
null, null, null));
+                new 
ComputeNodeInstanceContext(mock(ComputeNodeInstance.class), props -> 0, null, 
null, null));
     }
     
     private TimestampServiceRule createTimeServiceRule() {
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContext.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContext.java
index 9a11cc5f3f1..d0a9e53575d 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContext.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContext.java
@@ -23,7 +23,6 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator;
 import org.apache.shardingsphere.infra.lock.LockContext;
 import org.apache.shardingsphere.infra.state.instance.InstanceState;
@@ -52,8 +51,6 @@ public final class ComputeNodeInstanceContext {
     
     private final ModeConfiguration modeConfiguration;
     
-    private final ModeContextManager modeContextManager;
-    
     @SuppressWarnings("rawtypes")
     private final LockContext lockContext;
     
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
deleted file mode 100644
index 642c54cb0f9..00000000000
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.instance.mode;
-
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
-import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
-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 java.sql.SQLException;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * Mode context manager.
- */
-public interface ModeContextManager {
-    
-    /**
-     * Create database.
-     *
-     * @param databaseName database name
-     */
-    void createDatabase(String databaseName);
-    
-    /**
-     * Drop database.
-     *
-     * @param databaseName database name
-     */
-    void dropDatabase(String databaseName);
-    
-    /**
-     * Create schema.
-     *
-     * @param databaseName database name
-     * @param schemaName schema name
-     */
-    void createSchema(String databaseName, String schemaName);
-    
-    /**
-     * Alter schema.
-     *
-     * @param alterSchemaPOJO alter schema pojo
-     */
-    void alterSchema(AlterSchemaPOJO alterSchemaPOJO);
-    
-    /**
-     * Drop schema.
-     *
-     * @param databaseName database name
-     * @param schemaNames schema names
-     */
-    void dropSchema(String databaseName, Collection<String> schemaNames);
-    
-    /**
-     * Alter schema metadata.
-     *
-     * @param alterSchemaMetaDataPOJO alter schema metadata pojo
-     */
-    void alterSchemaMetaData(AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO);
-    
-    /**
-     * Register storage units.
-     *
-     * @param databaseName database name
-     * @param toBeRegisteredProps to be registered storage unit properties
-     * @throws SQLException SQL exception
-     */
-    void registerStorageUnits(String databaseName, Map<String, 
DataSourcePoolProperties> toBeRegisteredProps) throws SQLException;
-    
-    /**
-     * Alter storage units.
-     *
-     * @param databaseName database name
-     * @param toBeUpdatedProps to be updated storage unit properties
-     * @throws SQLException SQL exception
-     */
-    void alterStorageUnits(String databaseName, Map<String, 
DataSourcePoolProperties> toBeUpdatedProps) throws SQLException;
-    
-    /**
-     * Unregister storage units.
-     * @param databaseName database name
-     * @param toBeDroppedStorageUnitNames to be dropped storage unit names
-     * @throws SQLException SQL exception
-     */
-    void unregisterStorageUnits(String databaseName, Collection<String> 
toBeDroppedStorageUnitNames) throws SQLException;
-    
-    /**
-     * Alter single rule configuration.
-     *
-     * @param databaseName database name
-     * @param ruleConfigs rule configs
-     */
-    void alterSingleRuleConfiguration(String databaseName, 
Collection<RuleConfiguration> ruleConfigs);
-    
-    /**
-     * Alter rule configuration.
-     *
-     * @param databaseName database name
-     * @param toBeAlteredRuleConfig to be altered rule config
-     * @return meta data versions
-     */
-    Collection<MetaDataVersion> alterRuleConfiguration(String databaseName, 
RuleConfiguration toBeAlteredRuleConfig);
-    
-    /**
-     * Remove rule configuration item.
-     *
-     * @param databaseName database name
-     * @param toBeRemovedRuleConfig to be removed rule config
-     */
-    void removeRuleConfigurationItem(String databaseName, RuleConfiguration 
toBeRemovedRuleConfig);
-    
-    /**
-     * Remove rule configuration.
-     *
-     * @param databaseName database name
-     * @param ruleName rule name
-     */
-    void removeRuleConfiguration(String databaseName, String ruleName);
-    
-    /**
-     * Alter global rule configuration.
-     *
-     * @param globalRuleConfig global rule config
-     */
-    void alterGlobalRuleConfiguration(RuleConfiguration globalRuleConfig);
-    
-    /**
-     * Alter properties.
-     *
-     * @param props pros
-     */
-    void alterProperties(Properties props);
-}
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContextTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContextTest.java
index e014028431f..70353a59fd2 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContextTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstanceContextTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.infra.instance;
 
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator;
 import org.apache.shardingsphere.infra.lock.LockContext;
 import org.apache.shardingsphere.infra.state.instance.InstanceState;
@@ -42,8 +41,6 @@ class ComputeNodeInstanceContextTest {
     
     private final ModeConfiguration modeConfig = new 
ModeConfiguration("Standalone", null);
     
-    private final ModeContextManager modeContextManager = 
mock(ModeContextManager.class);
-    
     private final LockContext lockContext = mock(LockContext.class);
     
     private final EventBusContext eventBusContext = new EventBusContext();
@@ -53,7 +50,7 @@ class ComputeNodeInstanceContextTest {
         InstanceMetaData instanceMetaData = mock(InstanceMetaData.class);
         when(instanceMetaData.getId()).thenReturn("foo_instance_id");
         ComputeNodeInstanceContext context = new ComputeNodeInstanceContext(
-                new ComputeNodeInstance(instanceMetaData), 
mock(WorkerIdGenerator.class), modeConfig, modeContextManager, lockContext, 
eventBusContext);
+                new ComputeNodeInstance(instanceMetaData), 
mock(WorkerIdGenerator.class), modeConfig, lockContext, eventBusContext);
         InstanceState actual = 
context.getInstance().getState().getCurrentState();
         assertThat(actual, is(InstanceState.OK));
         context.updateStatus(instanceMetaData.getId(), 
InstanceState.CIRCUIT_BREAK.name());
@@ -68,14 +65,14 @@ class ComputeNodeInstanceContextTest {
     void assertGetWorkerId() {
         ComputeNodeInstance computeNodeInstance = 
mock(ComputeNodeInstance.class);
         when(computeNodeInstance.getWorkerId()).thenReturn(0);
-        ComputeNodeInstanceContext context = new 
ComputeNodeInstanceContext(computeNodeInstance, mock(WorkerIdGenerator.class), 
modeConfig, modeContextManager, lockContext, eventBusContext);
+        ComputeNodeInstanceContext context = new 
ComputeNodeInstanceContext(computeNodeInstance, mock(WorkerIdGenerator.class), 
modeConfig, lockContext, eventBusContext);
         assertThat(context.getWorkerId(), is(0));
     }
     
     @Test
     void assertGenerateWorkerId() {
         ComputeNodeInstanceContext context = new ComputeNodeInstanceContext(
-                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, modeContextManager, lockContext, 
eventBusContext);
+                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, lockContext, eventBusContext);
         assertThat(context.generateWorkerId(new Properties()), is(0));
     }
     
@@ -84,7 +81,7 @@ class ComputeNodeInstanceContextTest {
         InstanceMetaData instanceMetaData = mock(InstanceMetaData.class);
         when(instanceMetaData.getId()).thenReturn("foo_instance_id");
         ComputeNodeInstanceContext context = new ComputeNodeInstanceContext(
-                new ComputeNodeInstance(instanceMetaData), 
mock(WorkerIdGenerator.class), modeConfig, modeContextManager, lockContext, 
eventBusContext);
+                new ComputeNodeInstance(instanceMetaData), 
mock(WorkerIdGenerator.class), modeConfig, lockContext, eventBusContext);
         Collection<String> expected = Arrays.asList("label_1", "label_2");
         context.updateLabel("foo_instance_id", expected);
         Collection<String> actual = context.getInstance().getLabels();
@@ -94,7 +91,7 @@ class ComputeNodeInstanceContextTest {
     @Test
     void assertGetInstance() {
         ComputeNodeInstance expected = new 
ComputeNodeInstance(mock(InstanceMetaData.class));
-        ComputeNodeInstanceContext context = new 
ComputeNodeInstanceContext(expected, mock(WorkerIdGenerator.class), modeConfig, 
modeContextManager, lockContext, eventBusContext);
+        ComputeNodeInstanceContext context = new 
ComputeNodeInstanceContext(expected, mock(WorkerIdGenerator.class), modeConfig, 
lockContext, eventBusContext);
         ComputeNodeInstance actual = context.getInstance();
         assertThat(actual, is(expected));
     }
@@ -102,24 +99,24 @@ class ComputeNodeInstanceContextTest {
     @Test
     void assertGetState() {
         ComputeNodeInstanceContext context = new ComputeNodeInstanceContext(
-                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, modeContextManager, lockContext, 
eventBusContext);
+                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, lockContext, eventBusContext);
         assertNotNull(context.getInstance().getState());
     }
     
     @Test
     void assertGetModeConfiguration() {
         ComputeNodeInstanceContext context = new ComputeNodeInstanceContext(
-                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, modeContextManager, lockContext, 
eventBusContext);
+                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, lockContext, eventBusContext);
         assertThat(context.getModeConfiguration(), is(modeConfig));
     }
     
     @Test
     void assertIsCluster() {
         ComputeNodeInstanceContext context = new ComputeNodeInstanceContext(
-                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, modeContextManager, lockContext, 
eventBusContext);
+                new ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class), modeConfig, lockContext, eventBusContext);
         assertFalse(context.isCluster());
         ComputeNodeInstanceContext clusterContext = new 
ComputeNodeInstanceContext(new 
ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class),
-                new ModeConfiguration("Cluster", null), modeContextManager, 
lockContext, eventBusContext);
+                new ModeConfiguration("Cluster", null), lockContext, 
eventBusContext);
         assertTrue(clusterContext.isCluster());
     }
 }
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
index 22ca7c3c9cf..61f43a35f7b 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
@@ -23,11 +23,11 @@ import 
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.data
 import 
org.apache.shardingsphere.distsql.statement.rdl.rule.database.DatabaseRuleDefinitionStatement;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.rule.decorator.RuleConfigurationDecorator;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -49,10 +49,10 @@ public final class AlterDatabaseRuleOperator implements 
DatabaseRuleOperator {
     @SuppressWarnings("unchecked")
     public Collection<MetaDataVersion> operate(final 
DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase 
database, final RuleConfiguration currentRuleConfig) {
         RuleConfiguration toBeAlteredRuleConfig = 
executor.buildToBeAlteredRuleConfiguration(sqlStatement);
-        ModeContextManager modeContextManager = 
contextManager.getComputeNodeInstanceContext().getModeContextManager();
+        MetaDataManagerPersistService metaDataManagerPersistService = 
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService();
         RuleConfiguration toBeDroppedRuleConfig = 
executor.buildToBeDroppedRuleConfiguration(toBeAlteredRuleConfig);
-        modeContextManager.removeRuleConfigurationItem(database.getName(), 
toBeDroppedRuleConfig);
-        return modeContextManager.alterRuleConfiguration(database.getName(), 
decorateRuleConfiguration(database, toBeAlteredRuleConfig));
+        
metaDataManagerPersistService.removeRuleConfigurationItem(database.getName(), 
toBeDroppedRuleConfig);
+        return 
metaDataManagerPersistService.alterRuleConfiguration(database.getName(), 
decorateRuleConfiguration(database, toBeAlteredRuleConfig));
     }
     
     @SuppressWarnings("unchecked")
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
index 54a54a0f57a..faf4dd6fc8e 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
@@ -23,11 +23,11 @@ import 
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.data
 import 
org.apache.shardingsphere.distsql.statement.rdl.rule.database.DatabaseRuleDefinitionStatement;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.rule.decorator.RuleConfigurationDecorator;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -49,8 +49,8 @@ public final class CreateDatabaseRuleOperator implements 
DatabaseRuleOperator {
     @SuppressWarnings("unchecked")
     public Collection<MetaDataVersion> operate(final 
DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase 
database, final RuleConfiguration currentRuleConfig) {
         RuleConfiguration toBeCreatedRuleConfig = 
executor.buildToBeCreatedRuleConfiguration(sqlStatement);
-        ModeContextManager modeContextManager = 
contextManager.getComputeNodeInstanceContext().getModeContextManager();
-        return modeContextManager.alterRuleConfiguration(database.getName(), 
decorateRuleConfiguration(database, toBeCreatedRuleConfig));
+        MetaDataManagerPersistService metaDataManagerPersistService = 
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService();
+        return 
metaDataManagerPersistService.alterRuleConfiguration(database.getName(), 
decorateRuleConfiguration(database, toBeCreatedRuleConfig));
     }
     
     @SuppressWarnings("unchecked")
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
index 7d2b00639f4..7177d9e9924 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
@@ -24,11 +24,11 @@ import 
org.apache.shardingsphere.distsql.statement.rdl.rule.aware.StaticDataSour
 import 
org.apache.shardingsphere.distsql.statement.rdl.rule.database.DatabaseRuleDefinitionStatement;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfiguration;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.StaticDataSourceRuleAttribute;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -60,15 +60,15 @@ public final class DropDatabaseRuleOperator implements 
DatabaseRuleOperator {
             }
             // TODO refactor to new metadata refresh way
         }
-        ModeContextManager modeContextManager = 
contextManager.getComputeNodeInstanceContext().getModeContextManager();
+        MetaDataManagerPersistService metaDataManagerPersistService = 
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService();
         RuleConfiguration toBeDroppedRuleConfig = 
executor.buildToBeDroppedRuleConfiguration(sqlStatement);
-        modeContextManager.removeRuleConfigurationItem(database.getName(), 
toBeDroppedRuleConfig);
+        
metaDataManagerPersistService.removeRuleConfigurationItem(database.getName(), 
toBeDroppedRuleConfig);
         RuleConfiguration toBeAlteredRuleConfig = 
executor.buildToBeAlteredRuleConfiguration(sqlStatement);
         if (null != toBeAlteredRuleConfig && ((DatabaseRuleConfiguration) 
toBeAlteredRuleConfig).isEmpty()) {
             YamlRuleConfiguration yamlRuleConfig = new 
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfiguration(currentRuleConfig);
-            modeContextManager.removeRuleConfiguration(database.getName(), 
Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value());
+            
metaDataManagerPersistService.removeRuleConfiguration(database.getName(), 
Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value());
             return Collections.emptyList();
         }
-        return modeContextManager.alterRuleConfiguration(database.getName(), 
toBeAlteredRuleConfig);
+        return 
metaDataManagerPersistService.alterRuleConfiguration(database.getName(), 
toBeAlteredRuleConfig);
     }
 }
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java
index 3130abc7798..c28f2394cee 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/global/GlobalRuleDefinitionExecuteEngine.java
@@ -47,7 +47,7 @@ public final class GlobalRuleDefinitionExecuteEngine {
         ShardingSphereRule rule = 
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(executor.getRuleClass());
         executor.setRule(rule);
         executor.checkBeforeUpdate(sqlStatement);
-        
contextManager.getComputeNodeInstanceContext().getModeContextManager().alterGlobalRuleConfiguration(processUpdate(sqlStatement,
 rule));
+        
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterGlobalRuleConfiguration(processUpdate(sqlStatement,
 rule));
     }
     
     @SuppressWarnings("unchecked")
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
index 1bce53afc47..3a6938b4b0f 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
@@ -65,7 +65,7 @@ public final class AlterStorageUnitExecutor implements 
DistSQLUpdateExecutor<Alt
         Map<String, DataSourcePoolProperties> propsMap = 
DataSourceSegmentsConverter.convert(database.getProtocolType(), 
sqlStatement.getStorageUnits());
         validateHandler.validate(propsMap);
         try {
-            
contextManager.getComputeNodeInstanceContext().getModeContextManager().alterStorageUnits(database.getName(),
 propsMap);
+            
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterStorageUnits(database.getName(),
 propsMap);
         } catch (final SQLException | ShardingSphereExternalException ex) {
             throw new StorageUnitsOperateException("alter", propsMap.keySet(), 
ex);
         }
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
index 15e1396f987..3af15c74b69 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
@@ -67,7 +67,7 @@ public final class RegisterStorageUnitExecutor implements 
DistSQLUpdateExecutor<
         }
         validateHandler.validate(propsMap);
         try {
-            
contextManager.getComputeNodeInstanceContext().getModeContextManager().registerStorageUnits(database.getName(),
 propsMap);
+            
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().registerStorageUnits(database.getName(),
 propsMap);
         } catch (final SQLException | ShardingSphereExternalException ex) {
             throw new StorageUnitsOperateException("register", 
propsMap.keySet(), ex);
         }
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
index 580a93f0478..a01b50de523 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
@@ -57,7 +57,7 @@ public final class UnregisterStorageUnitExecutor implements 
DistSQLUpdateExecuto
         }
         checkInUsed(sqlStatement);
         try {
-            
contextManager.getComputeNodeInstanceContext().getModeContextManager().unregisterStorageUnits(database.getName(),
 sqlStatement.getStorageUnitNames());
+            
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().unregisterStorageUnits(database.getName(),
 sqlStatement.getStorageUnitNames());
         } catch (final SQLException | ShardingSphereServerException ex) {
             throw new StorageUnitsOperateException("unregister", 
sqlStatement.getStorageUnitNames(), ex);
         }
diff --git 
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java
 
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java
index 806bb8eb172..5dcfc1f4f1d 100644
--- 
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java
+++ 
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.Unregi
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.InUsedStorageUnitException;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
@@ -32,6 +31,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -63,7 +63,7 @@ class UnregisterStorageUnitExecutorTest {
     private ContextManager contextManager;
     
     @Mock
-    private ModeContextManager modeContextManager;
+    private MetaDataManagerPersistService metaDataManagerPersistService;
     
     @BeforeEach
     void setUp() {
@@ -85,7 +85,7 @@ class UnregisterStorageUnitExecutorTest {
         MetaDataContexts metaDataContexts = mock(MetaDataContexts.class, 
RETURNS_DEEP_STUBS);
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
-        
when(result.getComputeNodeInstanceContext().getModeContextManager()).thenReturn(modeContextManager);
+        
when(result.getPersistServiceFacade().getMetaDataManagerPersistService()).thenReturn(metaDataManagerPersistService);
         when(result.getDatabase("foo_db")).thenReturn(database);
         return result;
     }
@@ -95,7 +95,7 @@ class UnregisterStorageUnitExecutorTest {
         
when(database.getRuleMetaData().getInUsedStorageUnitNameAndRulesMap()).thenReturn(Collections.emptyMap());
         UnregisterStorageUnitStatement sqlStatement = new 
UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false);
         executor.executeUpdate(sqlStatement, contextManager);
-        verify(modeContextManager).unregisterStorageUnits("foo_db", 
sqlStatement.getStorageUnitNames());
+        verify(metaDataManagerPersistService).unregisterStorageUnits("foo_db", 
sqlStatement.getStorageUnitNames());
     }
     
     @Test
@@ -126,14 +126,14 @@ class UnregisterStorageUnitExecutorTest {
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(new DistSQLHandlerFixtureRule())));
         UnregisterStorageUnitStatement sqlStatement = new 
UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), true, false);
         executor.executeUpdate(sqlStatement, contextManager);
-        verify(modeContextManager).unregisterStorageUnits("foo_db", 
sqlStatement.getStorageUnitNames());
+        verify(metaDataManagerPersistService).unregisterStorageUnits("foo_db", 
sqlStatement.getStorageUnitNames());
     }
     
     @Test
     void assertExecuteUpdateWithIfExists() throws SQLException {
         UnregisterStorageUnitStatement sqlStatement = new 
UnregisterStorageUnitStatement(true, Collections.singleton("foo_ds"), true, 
false);
         executor.executeUpdate(sqlStatement, contextManager);
-        verify(modeContextManager).unregisterStorageUnits("foo_db", 
sqlStatement.getStorageUnitNames());
+        verify(metaDataManagerPersistService).unregisterStorageUnits("foo_db", 
sqlStatement.getStorageUnitNames());
     }
     
     @Test
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
index daa416843af..90c09bf8816 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
 import org.apache.shardingsphere.infra.executor.sql.process.ProcessEngine;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
@@ -33,6 +32,7 @@ import 
org.apache.shardingsphere.infra.session.query.QueryContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefreshEngine;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 
 import java.sql.SQLException;
 import java.util.Collection;
@@ -48,7 +48,7 @@ public final class DriverJDBCExecutor {
     
     private final MetaDataContexts metaDataContexts;
     
-    private final ModeContextManager modeContextManager;
+    private final MetaDataManagerPersistService metaDataManagerPersistService;
     
     private final JDBCExecutor jdbcExecutor;
     
@@ -58,7 +58,7 @@ public final class DriverJDBCExecutor {
         this.databaseName = databaseName;
         this.jdbcExecutor = jdbcExecutor;
         metaDataContexts = contextManager.getMetaDataContexts();
-        modeContextManager = 
contextManager.getComputeNodeInstanceContext().getModeContextManager();
+        metaDataManagerPersistService = 
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService();
     }
     
     /**
@@ -146,8 +146,8 @@ public final class DriverJDBCExecutor {
     private <T> List<T> doExecute(final 
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext, final 
SQLStatementContext sqlStatementContext, final Collection<RouteUnit> routeUnits,
                                   final JDBCExecutorCallback<T> callback) 
throws SQLException {
         List<T> results = jdbcExecutor.execute(executionGroupContext, 
callback);
-        new MetaDataRefreshEngine(modeContextManager,
-                
metaDataContexts.getMetaData().getDatabase(sqlStatementContext.getTablesContext().getDatabaseName().orElse(databaseName)),
 metaDataContexts.getMetaData().getProps())
+        new MetaDataRefreshEngine(metaDataManagerPersistService, 
metaDataContexts.getMetaData().getDatabase(sqlStatementContext.getTablesContext().getDatabaseName().orElse(databaseName)),
+                metaDataContexts.getMetaData().getProps())
                         .refresh(sqlStatementContext, routeUnits);
         return results;
     }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
index 385e1944924..a284974cb4e 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
@@ -21,10 +21,10 @@ import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 import java.sql.SQLException;
@@ -42,7 +42,7 @@ public final class MetaDataRefreshEngine {
     
     private static final Collection<Class<? extends SQLStatement>> 
IGNORED_SQL_STATEMENT_CLASSES = Collections.newSetFromMap(new 
ConcurrentHashMap<>());
     
-    private final ModeContextManager modeContextManager;
+    private final MetaDataManagerPersistService metaDataManagerPersistService;
     
     private final ShardingSphereDatabase database;
     
@@ -66,7 +66,8 @@ public final class MetaDataRefreshEngine {
             String schemaName = 
sqlStatementContext.getTablesContext().getSchemaName()
                     .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
             Collection<String> logicDataSourceNames = 
routeUnits.stream().map(each -> 
each.getDataSourceMapper().getLogicName()).collect(Collectors.toList());
-            schemaRefresher.get().refresh(modeContextManager, database, 
logicDataSourceNames, schemaName, sqlStatementContext.getDatabaseType(), 
sqlStatementContext.getSqlStatement(), props);
+            schemaRefresher.get().refresh(metaDataManagerPersistService, 
database, logicDataSourceNames, schemaName, 
sqlStatementContext.getDatabaseType(),
+                    sqlStatementContext.getSqlStatement(), props);
             return;
         }
         IGNORED_SQL_STATEMENT_CLASSES.add(sqlStatementClass);
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefresher.java
index e9f00df3fcc..b22ff921cdb 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefresher.java
@@ -19,10 +19,10 @@ package org.apache.shardingsphere.mode.metadata.refresher;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 import java.sql.SQLException;
@@ -39,7 +39,7 @@ public interface MetaDataRefresher<T extends SQLStatement> 
extends TypedSPI {
     /**
      * Refresh schema.
      *
-     * @param modeContextManager mode context manager
+     * @param metaDataManagerPersistService meta data manager persist service
      * @param database database
      * @param logicDataSourceNames route data source names
      * @param schemaName schema name
@@ -48,7 +48,7 @@ public interface MetaDataRefresher<T extends SQLStatement> 
extends TypedSPI {
      * @param props configuration properties
      * @throws SQLException SQL exception
      */
-    void refresh(ModeContextManager modeContextManager, ShardingSphereDatabase 
database, Collection<String> logicDataSourceNames, String schemaName,
+    void refresh(MetaDataManagerPersistService metaDataManagerPersistService, 
ShardingSphereDatabase database, Collection<String> logicDataSourceNames, 
String schemaName,
                  DatabaseType databaseType, T sqlStatement, 
ConfigurationProperties props) throws SQLException;
     
     @Override
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
index 9d91447d24b..75e1da79c00 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
@@ -20,13 +20,13 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.index;
 import com.google.common.base.Preconditions;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterIndexStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.AlterIndexStatementHandler;
@@ -40,7 +40,7 @@ import java.util.Optional;
 public final class AlterIndexStatementSchemaRefresher implements 
MetaDataRefresher<AlterIndexStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final AlterIndexStatement sqlStatement, final 
ConfigurationProperties props) {
         Optional<IndexSegment> renameIndex = 
AlterIndexStatementHandler.getRenameIndexSegment(sqlStatement);
         if (!sqlStatement.getIndex().isPresent() || !renameIndex.isPresent()) {
@@ -58,7 +58,7 @@ public final class AlterIndexStatementSchemaRefresher 
implements MetaDataRefresh
             newTable.putIndex(new ShardingSphereIndex(renameIndexName));
             AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName);
             alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
-            modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+            
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
         }
     }
     
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java
index 0a4dba15d71..a0ebfa87ec2 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/CreateIndexStatementSchemaRefresher.java
@@ -20,13 +20,13 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.index;
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
 
 import java.util.Collection;
@@ -37,7 +37,7 @@ import java.util.Collection;
 public final class CreateIndexStatementSchemaRefresher implements 
MetaDataRefresher<CreateIndexStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final CreateIndexStatement sqlStatement, final 
ConfigurationProperties props) {
         String indexName = null == sqlStatement.getIndex()
                 ? 
IndexMetaDataUtils.getGeneratedLogicIndexName(sqlStatement.getColumns())
@@ -50,7 +50,7 @@ public final class CreateIndexStatementSchemaRefresher 
implements MetaDataRefres
         table.putIndex(new ShardingSphereIndex(indexName));
         AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
         alterSchemaMetaDataPOJO.getAlteredTables().add(table);
-        modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+        
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
     }
     
     private ShardingSphereTable newShardingSphereTable(final 
ShardingSphereTable table) {
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/DropIndexStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/DropIndexStatementSchemaRefresher.java
index 3cced6664b6..ddfde302a24 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/DropIndexStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/DropIndexStatementSchemaRefresher.java
@@ -19,13 +19,13 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.index;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.QualifiedTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexStatement;
@@ -41,7 +41,7 @@ import java.util.Optional;
 public final class DropIndexStatementSchemaRefresher implements 
MetaDataRefresher<DropIndexStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final DropIndexStatement sqlStatement, final 
ConfigurationProperties props) {
         for (IndexSegment each : sqlStatement.getIndexes()) {
             String actualSchemaName = each.getOwner().map(optional -> 
optional.getIdentifier().getValue().toLowerCase()).orElse(schemaName);
@@ -53,7 +53,7 @@ public final class DropIndexStatementSchemaRefresher 
implements MetaDataRefreshe
             ShardingSphereTable table = 
newShardingSphereTable(database.getSchema(actualSchemaName).getTable(logicTableName.get()));
             table.removeIndex(each.getIndexName().getIdentifier().getValue());
             alterSchemaMetaDataPOJO.getAlteredTables().add(table);
-            modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+            
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
         }
     }
     
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
index 287aed09f71..27093ae1989 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
@@ -19,10 +19,10 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.schema;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterSchemaStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.AlterSchemaStatementHandler;
 
@@ -35,13 +35,13 @@ import java.util.Optional;
 public final class AlterSchemaStatementSchemaRefresher implements 
MetaDataRefresher<AlterSchemaStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final AlterSchemaStatement sqlStatement, final 
ConfigurationProperties props) {
         Optional<String> renameSchemaName = 
AlterSchemaStatementHandler.getRenameSchema(sqlStatement).map(optional -> 
optional.getValue().toLowerCase());
         if (!renameSchemaName.isPresent()) {
             return;
         }
-        modeContextManager.alterSchema(new AlterSchemaPOJO(database.getName(), 
sqlStatement.getSchemaName().getValue().toLowerCase(),
+        metaDataManagerPersistService.alterSchema(new 
AlterSchemaPOJO(database.getName(), 
sqlStatement.getSchemaName().getValue().toLowerCase(),
                 renameSchemaName.get(), logicDataSourceNames));
     }
     
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/CreateSchemaStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/CreateSchemaStatementSchemaRefresher.java
index 7989eaa15c8..1bbcafb1a46 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/CreateSchemaStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/CreateSchemaStatementSchemaRefresher.java
@@ -19,9 +19,9 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.schema;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateSchemaStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.CreateSchemaStatementHandler;
 
@@ -33,10 +33,10 @@ import java.util.Collection;
 public final class CreateSchemaStatementSchemaRefresher implements 
MetaDataRefresher<CreateSchemaStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final CreateSchemaStatement sqlStatement, final 
ConfigurationProperties props) {
         (sqlStatement.getSchemaName().isPresent() ? 
sqlStatement.getSchemaName() : 
CreateSchemaStatementHandler.getUsername(sqlStatement))
-                .ifPresent(optional -> 
modeContextManager.createSchema(database.getName(), 
optional.getValue().toLowerCase()));
+                .ifPresent(optional -> 
metaDataManagerPersistService.createSchema(database.getName(), 
optional.getValue().toLowerCase()));
     }
     
     @Override
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/DropSchemaStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/DropSchemaStatementSchemaRefresher.java
index f7c8aded79d..f897111d8ea 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/DropSchemaStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/schema/DropSchemaStatementSchemaRefresher.java
@@ -19,9 +19,9 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.schema;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropSchemaStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 
@@ -34,9 +34,9 @@ import java.util.LinkedList;
 public final class DropSchemaStatementSchemaRefresher implements 
MetaDataRefresher<DropSchemaStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final DropSchemaStatement sqlStatement, final 
ConfigurationProperties props) {
-        modeContextManager.dropSchema(database.getName(), 
getSchemaNames(sqlStatement));
+        metaDataManagerPersistService.dropSchema(database.getName(), 
getSchemaNames(sqlStatement));
     }
     
     private Collection<String> getSchemaNames(final DropSchemaStatement 
sqlStatement) {
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/AlterTableStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/AlterTableStatementSchemaRefresher.java
index 606844881af..49eb76aba8c 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/AlterTableStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/AlterTableStatementSchemaRefresher.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.table;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -30,6 +29,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchema
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
 
 import java.sql.SQLException;
@@ -45,7 +45,7 @@ import java.util.Optional;
 public final class AlterTableStatementSchemaRefresher implements 
MetaDataRefresher<AlterTableStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final AlterTableStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         String tableName = TableRefreshUtils.getTableName(databaseType, 
sqlStatement.getTable().getTableName().getIdentifier());
         AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
@@ -56,7 +56,7 @@ public final class AlterTableStatementSchemaRefresher 
implements MetaDataRefresh
         } else {
             alterSchemaMetaDataPOJO.getAlteredTables().add(getTable(database, 
logicDataSourceNames, schemaName, tableName, props));
         }
-        modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+        
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
     }
     
     private ShardingSphereTable getTable(final ShardingSphereDatabase 
database, final Collection<String> logicDataSourceNames, final String 
schemaName,
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java
index 5fd8e2bc41f..0a5bf53c534 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/CreateTableStatementSchemaRefresher.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.table;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -30,6 +29,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchema
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement;
 
 import java.sql.SQLException;
@@ -45,7 +45,7 @@ import java.util.Optional;
 public final class CreateTableStatementSchemaRefresher implements 
MetaDataRefresher<CreateTableStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final CreateTableStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         String tableName = TableRefreshUtils.getTableName(databaseType, 
sqlStatement.getTable().getTableName().getIdentifier());
         RuleMetaData ruleMetaData = new RuleMetaData(new 
LinkedList<>(database.getRuleMetaData().getRules()));
@@ -60,9 +60,9 @@ public final class CreateTableStatementSchemaRefresher 
implements MetaDataRefres
         if (actualTableMetaData.isPresent()) {
             AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
             
alterSchemaMetaDataPOJO.getAlteredTables().add(actualTableMetaData.get());
-            modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+            
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
             if (isSingleTable && 
TableRefreshUtils.isRuleRefreshRequired(ruleMetaData, schemaName, tableName)) {
-                
modeContextManager.alterSingleRuleConfiguration(database.getName(), 
ruleMetaData.getConfigurations());
+                
metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(), 
ruleMetaData.getConfigurations());
             }
         }
     }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/DropTableStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/DropTableStatementSchemaRefresher.java
index 136c9d5d179..6fc169d87b3 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/DropTableStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/DropTableStatementSchemaRefresher.java
@@ -19,11 +19,11 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.table;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
 
@@ -35,15 +35,15 @@ import java.util.Collection;
 public final class DropTableStatementSchemaRefresher implements 
MetaDataRefresher<DropTableStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final DropTableStatement sqlStatement, final 
ConfigurationProperties props) {
         AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
         sqlStatement.getTables().forEach(each -> 
alterSchemaMetaDataPOJO.getDroppedTables().add(each.getTableName().getIdentifier().getValue()));
         boolean isRuleRefreshRequired = 
TableRefreshUtils.isRuleRefreshRequired(database.getRuleMetaData(), schemaName, 
sqlStatement.getTables());
-        modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+        
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
         for (SimpleTableSegment each : sqlStatement.getTables()) {
             if (isRuleRefreshRequired && 
TableRefreshUtils.isSingleTable(each.getTableName().getIdentifier().getValue(), 
database)) {
-                
modeContextManager.alterSingleRuleConfiguration(database.getName(), 
database.getRuleMetaData().getConfigurations());
+                
metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(), 
database.getRuleMetaData().getConfigurations());
                 break;
             }
         }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/RenameTableStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/RenameTableStatementSchemaRefresher.java
index d357e623319..10420dad26f 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/RenameTableStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/table/RenameTableStatementSchemaRefresher.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.table;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -30,6 +29,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchema
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.table.RenameTableDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.RenameTableStatement;
 
@@ -46,14 +46,14 @@ import java.util.Optional;
 public final class RenameTableStatementSchemaRefresher implements 
MetaDataRefresher<RenameTableStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final RenameTableStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         for (RenameTableDefinitionSegment each : 
sqlStatement.getRenameTables()) {
             AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
             alterSchemaMetaDataPOJO.getAlteredTables().add(getTable(database, 
logicDataSourceNames, schemaName,
                     TableRefreshUtils.getTableName(databaseType, 
each.getRenameTable().getTableName().getIdentifier()), props));
             
alterSchemaMetaDataPOJO.getDroppedTables().add(each.getTable().getTableName().getIdentifier().getValue());
-            modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+            
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
         }
     }
     
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/AlterViewStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/AlterViewStatementSchemaRefresher.java
index 6df2f299c57..6a3c5e623e6 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/AlterViewStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/AlterViewStatementSchemaRefresher.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.view;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -31,6 +30,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchema
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterViewStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.AlterViewStatementHandler;
@@ -48,7 +48,7 @@ import java.util.Optional;
 public final class AlterViewStatementSchemaRefresher implements 
MetaDataRefresher<AlterViewStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final AlterViewStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         String viewName = TableRefreshUtils.getTableName(databaseType, 
sqlStatement.getView().getTableName().getIdentifier());
         AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
@@ -68,7 +68,7 @@ public final class AlterViewStatementSchemaRefresher 
implements MetaDataRefreshe
             
alterSchemaMetaDataPOJO.getAlteredTables().add(schema.getTable(viewName));
             
alterSchemaMetaDataPOJO.getAlteredViews().add(schema.getView(viewName));
         }
-        modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+        
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
     }
     
     private ShardingSphereSchema getSchema(final ShardingSphereDatabase 
database, final Collection<String> logicDataSourceNames,
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java
index 60a3bc41714..ccd8df57024 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/CreateViewStatementSchemaRefresher.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.view;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -31,6 +30,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchema
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateViewStatement;
 
 import java.sql.SQLException;
@@ -46,7 +46,7 @@ import java.util.Optional;
 public final class CreateViewStatementSchemaRefresher implements 
MetaDataRefresher<CreateViewStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final CreateViewStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         String viewName = TableRefreshUtils.getTableName(databaseType, 
sqlStatement.getView().getTableName().getIdentifier());
         RuleMetaData ruleMetaData = new RuleMetaData(new 
LinkedList<>(database.getRuleMetaData().getRules()));
@@ -61,7 +61,7 @@ public final class CreateViewStatementSchemaRefresher 
implements MetaDataRefresh
             AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
             
alterSchemaMetaDataPOJO.getAlteredTables().add(actualTableMetaData.get());
             alterSchemaMetaDataPOJO.getAlteredViews().add(new 
ShardingSphereView(viewName, sqlStatement.getViewDefinition()));
-            modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+            
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
         }
     }
     
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/DropViewStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/DropViewStatementSchemaRefresher.java
index e5c77ce59f8..4e847ea9eb9 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/DropViewStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/view/DropViewStatementSchemaRefresher.java
@@ -19,10 +19,10 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.type.view;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import org.apache.shardingsphere.mode.metadata.refresher.MetaDataRefresher;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropViewStatement;
 
 import java.util.Collection;
@@ -33,7 +33,7 @@ import java.util.Collection;
 public final class DropViewStatementSchemaRefresher implements 
MetaDataRefresher<DropViewStatement> {
     
     @Override
-    public void refresh(final ModeContextManager modeContextManager, final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
+    public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final DropViewStatement sqlStatement, final 
ConfigurationProperties props) {
         AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
         sqlStatement.getViews().forEach(each -> {
@@ -41,7 +41,7 @@ public final class DropViewStatementSchemaRefresher 
implements MetaDataRefresher
             alterSchemaMetaDataPOJO.getDroppedTables().add(viewName);
             alterSchemaMetaDataPOJO.getDroppedViews().add(viewName);
         });
-        modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
+        
metaDataManagerPersistService.alterSchemaMetaData(alterSchemaMetaDataPOJO);
     }
     
     @Override
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
index be3c61eef67..0d477c8b0e4 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
@@ -30,7 +30,6 @@ import 
org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.lock.GlobalLockContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.manager.ContextManagerAware;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
 import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.GlobalLockPersistService;
@@ -71,7 +70,6 @@ public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder
         MetaDataPersistService metaDataPersistService = new 
MetaDataPersistService(repository);
         MetaDataContexts metaDataContexts = 
MetaDataContextsFactory.create(metaDataPersistService, param, 
computeNodeInstanceContext, new 
QualifiedDataSourceStatusService(repository).loadStatus());
         ContextManager result = new ContextManager(metaDataContexts, 
computeNodeInstanceContext);
-        setContextManagerAware(result);
         createSubscribers(eventBusContext, repository);
         registerOnline(eventBusContext, computeNodeInstanceContext, 
repository, param, result);
         setClusterState(result);
@@ -87,8 +85,9 @@ public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder
     
     private ComputeNodeInstanceContext buildComputeNodeInstanceContext(final 
ModeConfiguration modeConfig,
                                                                        final 
InstanceMetaData instanceMetaData, final ClusterPersistRepository repository, 
final EventBusContext eventBusContext) {
-        return new ComputeNodeInstanceContext(new 
ComputeNodeInstance(instanceMetaData), new ClusterWorkerIdGenerator(repository, 
instanceMetaData.getId()), modeConfig,
-                new ClusterModeContextManager(), new GlobalLockContext(new 
GlobalLockPersistService(initDistributedLockHolder(repository))), 
eventBusContext);
+        return new ComputeNodeInstanceContext(new 
ComputeNodeInstance(instanceMetaData),
+                new ClusterWorkerIdGenerator(repository, 
instanceMetaData.getId()), modeConfig,
+                new GlobalLockContext(new 
GlobalLockPersistService(initDistributedLockHolder(repository))), 
eventBusContext);
     }
     
     private DistributedLockHolder initDistributedLockHolder(final 
ClusterPersistRepository repository) {
@@ -96,10 +95,6 @@ public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder
         return null == distributedLockHolder ? new 
DistributedLockHolder("default", repository, new DefaultLockTypedProperties(new 
Properties())) : distributedLockHolder;
     }
     
-    private void setContextManagerAware(final ContextManager contextManager) {
-        ((ContextManagerAware) 
contextManager.getComputeNodeInstanceContext().getModeContextManager()).setContextManager(contextManager);
-    }
-    
     // TODO remove the method, only keep ZooKeeper's events, remove all 
decouple events
     private void createSubscribers(final EventBusContext eventBusContext, 
final ClusterPersistRepository repository) {
         eventBusContext.register(new 
QualifiedDataSourceStatusSubscriber(repository));
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
deleted file mode 100644
index 6c4beefb71d..00000000000
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.mode.manager.cluster;
-
-import lombok.Setter;
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
-import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-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.service.config.database.DatabaseBasedPersistService;
-import 
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataPersistService;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.manager.ContextManagerAware;
-import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.stream.Collectors;
-
-/**
- * Cluster mode context manager.
- */
-@Setter
-public final class ClusterModeContextManager implements ModeContextManager, 
ContextManagerAware {
-    
-    private ContextManager contextManager;
-    
-    @Override
-    public void createDatabase(final String databaseName) {
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().addDatabase(databaseName);
-    }
-    
-    @Override
-    public void dropDatabase(final String databaseName) {
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().dropDatabase(databaseName);
-    }
-    
-    @Override
-    public void createSchema(final String databaseName, final String 
schemaName) {
-        
contextManager.getMetaDataContexts().getPersistService().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.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
-        databaseMetaDataService.persistByAlterConfiguration(databaseName, 
alterSchemaPOJO.getRenameSchemaName(), schema);
-        
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, 
alterSchemaPOJO.getRenameSchemaName(), schema.getViews());
-        databaseMetaDataService.dropSchema(databaseName, schemaName);
-    }
-    
-    @Override
-    public void dropSchema(final String databaseName, final Collection<String> 
schemaNames) {
-        DatabaseMetaDataPersistService databaseMetaDataService = 
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
-        schemaNames.forEach(each -> 
databaseMetaDataService.dropSchema(databaseName, each));
-    }
-    
-    @Override
-    public void alterSchemaMetaData(final AlterSchemaMetaDataPOJO 
alterSchemaMetaDataPOJO) {
-        String databaseName = alterSchemaMetaDataPOJO.getDatabaseName();
-        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.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
-        
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, 
schemaName, tables);
-        
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, 
schemaName, views);
-        alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> 
databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, 
schemaName, each));
-        alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -> 
databaseMetaDataService.getViewMetaDataPersistService().delete(databaseName, 
schemaName, each));
-    }
-    
-    @Override
-    public void registerStorageUnits(final String databaseName, final 
Map<String, DataSourcePoolProperties> toBeRegisteredProps) {
-        
contextManager.getMetaDataContexts().getPersistService().getDataSourceUnitService().persistConfigurations(databaseName,
 toBeRegisteredProps);
-    }
-    
-    @Override
-    public void alterStorageUnits(final String databaseName, final Map<String, 
DataSourcePoolProperties> toBeUpdatedProps) {
-        DatabaseBasedPersistService<Map<String, DataSourcePoolProperties>> 
dataSourceService = 
contextManager.getMetaDataContexts().getPersistService().getDataSourceUnitService();
-        
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().switchActiveVersion(dataSourceService.persistConfigurations(databaseName,
 toBeUpdatedProps));
-    }
-    
-    @Override
-    public void unregisterStorageUnits(final String databaseName, final 
Collection<String> toBeDroppedStorageUnitNames) {
-        
contextManager.getMetaDataContexts().getPersistService().getDataSourceUnitService().deleteConfigurations(databaseName,
-                
getToBeDroppedDataSourcePoolProperties(contextManager.getMetaDataContexts().getPersistService().getDataSourceUnitService().load(databaseName),
 toBeDroppedStorageUnitNames));
-    }
-    
-    private Map<String, DataSourcePoolProperties> 
getToBeDroppedDataSourcePoolProperties(final Map<String, 
DataSourcePoolProperties> propsMap, final Collection<String> 
toBeDroppedResourceNames) {
-        Map<String, DataSourcePoolProperties> result = new 
LinkedHashMap<>(toBeDroppedResourceNames.size(), 1F);
-        for (String each : toBeDroppedResourceNames) {
-            if (propsMap.containsKey(each)) {
-                result.put(each, propsMap.get(each));
-            }
-        }
-        return result;
-    }
-    
-    @Override
-    public void alterSingleRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
-        ruleConfigs.removeIf(each -> 
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
-        
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService()
-                
.switchActiveVersion(contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persistConfigurations(databaseName,
 ruleConfigs));
-    }
-    
-    @Override
-    public Collection<MetaDataVersion> alterRuleConfiguration(final String 
databaseName, final RuleConfiguration toBeAlteredRuleConfig) {
-        if (null != toBeAlteredRuleConfig) {
-            return 
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persistConfigurations(databaseName,
 Collections.singleton(toBeAlteredRuleConfig));
-        }
-        return Collections.emptyList();
-    }
-    
-    @Override
-    public void removeRuleConfigurationItem(final String databaseName, final 
RuleConfiguration toBeRemovedRuleConfig) {
-        if (null != toBeRemovedRuleConfig) {
-            
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().deleteConfigurations(databaseName,
 Collections.singleton(toBeRemovedRuleConfig));
-        }
-    }
-    
-    @Override
-    public void removeRuleConfiguration(final String databaseName, final 
String ruleName) {
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().delete(databaseName,
 ruleName);
-    }
-    
-    @Override
-    public void alterGlobalRuleConfiguration(final RuleConfiguration 
toBeAlteredRuleConfig) {
-        
contextManager.getMetaDataContexts().getPersistService().getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
-    }
-    
-    @Override
-    public void alterProperties(final Properties props) {
-        
contextManager.getMetaDataContexts().getPersistService().getPropsService().persist(props);
-    }
-}
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
index cf02100f714..a6048e66907 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
@@ -51,17 +51,12 @@ public final class StandaloneContextManagerBuilder 
implements ContextManagerBuil
         MetaDataContexts metaDataContexts = 
MetaDataContextsFactory.create(persistService, param, 
computeNodeInstanceContext);
         ContextManager result = new ContextManager(metaDataContexts, 
computeNodeInstanceContext);
         new StandaloneEventSubscriberRegistry(result).register();
-        setContextManagerAware(result);
         return result;
     }
     
     private ComputeNodeInstanceContext buildComputeNodeInstanceContext(final 
ContextManagerBuilderParameter param, final EventBusContext eventBusContext) {
         return new ComputeNodeInstanceContext(new 
ComputeNodeInstance(param.getInstanceMetaData()),
-                new StandaloneWorkerIdGenerator(), 
param.getModeConfiguration(), new StandaloneModeContextManager(), new 
GlobalLockContext(null), eventBusContext);
-    }
-    
-    private void setContextManagerAware(final ContextManager contextManager) {
-        ((StandaloneModeContextManager) 
contextManager.getComputeNodeInstanceContext().getModeContextManager()).setContextManager(contextManager);
+                new StandaloneWorkerIdGenerator(), 
param.getModeConfiguration(), new GlobalLockContext(null), eventBusContext);
     }
     
     @Override
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
deleted file mode 100644
index 9d26da96625..00000000000
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.mode.manager.standalone;
-
-import com.google.common.base.Strings;
-import lombok.Setter;
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
-import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-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.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.infra.spi.type.ordered.cache.OrderedServicesCache;
-import 
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
-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.manager.ContextManagerAware;
-import org.apache.shardingsphere.mode.manager.switcher.ResourceSwitchManager;
-import org.apache.shardingsphere.mode.manager.switcher.SwitchingResource;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import 
org.apache.shardingsphere.mode.metadata.builder.RuleConfigurationEventBuilder;
-import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
-import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
-
-import java.sql.SQLException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.Properties;
-import java.util.stream.Collectors;
-
-/**
- * Standalone mode context manager.
- */
-@Setter
-public final class StandaloneModeContextManager implements ModeContextManager, 
ContextManagerAware {
-    
-    private final RuleConfigurationEventBuilder ruleConfigurationEventBuilder 
= new RuleConfigurationEventBuilder();
-    
-    private ContextManager contextManager;
-    
-    @Override
-    public void createDatabase(final String databaseName) {
-        
contextManager.getResourceMetaDataContextManager().addDatabase(databaseName);
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().addDatabase(databaseName);
-        clearServiceCache();
-    }
-    
-    @Override
-    public void dropDatabase(final String databaseName) {
-        
contextManager.getResourceMetaDataContextManager().dropDatabase(databaseName);
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().dropDatabase(databaseName);
-        clearServiceCache();
-    }
-    
-    @Override
-    public void createSchema(final String databaseName, final String 
schemaName) {
-        ShardingSphereSchema schema = new ShardingSphereSchema();
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().getMetaData();
-        ShardingSphereDatabase database = metaData.getDatabase(databaseName);
-        database.addSchema(schemaName, schema);
-        metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
 schemaName, schema);
-    }
-    
-    @Override
-    public void alterSchema(final AlterSchemaPOJO alterSchemaPOJO) {
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().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.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
-        
databaseMetaDataService.persistByAlterConfiguration(alterSchemaPOJO.getDatabaseName(),
 alterSchemaPOJO.getRenameSchemaName(), 
database.getSchema(alterSchemaPOJO.getRenameSchemaName()));
-        
databaseMetaDataService.getViewMetaDataPersistService().persist(alterSchemaPOJO.getDatabaseName(),
 alterSchemaPOJO.getRenameSchemaName(),
-                
database.getSchema(alterSchemaPOJO.getRenameSchemaName()).getViews());
-        databaseMetaDataService.dropSchema(alterSchemaPOJO.getDatabaseName(), 
alterSchemaPOJO.getSchemaName());
-    }
-    
-    private void putSchemaMetaData(final ShardingSphereDatabase database, 
final String schemaName, final String renameSchemaName, final String 
logicDataSourceName) {
-        ShardingSphereSchema schema = database.getSchema(schemaName);
-        database.addSchema(renameSchemaName, schema);
-        addDataNode(database, logicDataSourceName, schemaName, 
schema.getAllTableNames());
-    }
-    
-    private void addDataNode(final ShardingSphereDatabase database, final 
String logicDataSourceName, final String schemaName, final Collection<String> 
tobeAddedTableNames) {
-        tobeAddedTableNames.forEach(each -> {
-            if (!Strings.isNullOrEmpty(logicDataSourceName) && 
TableRefreshUtils.isSingleTable(each, database)) {
-                
database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class).forEach(rule
 -> rule.put(logicDataSourceName, schemaName, each));
-            }
-        });
-    }
-    
-    private void addDataNode(final ShardingSphereDatabase database, final 
String logicDataSourceName, final String schemaName, final Map<String, 
ShardingSphereTable> toBeAddedTables,
-                             final Map<String, ShardingSphereView> 
toBeAddedViews) {
-        addTablesToDataNode(database, schemaName, logicDataSourceName, 
toBeAddedTables);
-        addViewsToDataNode(database, schemaName, logicDataSourceName, 
toBeAddedTables, toBeAddedViews);
-    }
-    
-    private void addTablesToDataNode(final ShardingSphereDatabase database, 
final String schemaName, final String logicDataSourceName, final Map<String, 
ShardingSphereTable> toBeAddedTables) {
-        for (Entry<String, ShardingSphereTable> entry : 
toBeAddedTables.entrySet()) {
-            if (!Strings.isNullOrEmpty(logicDataSourceName) && 
TableRefreshUtils.isSingleTable(entry.getKey(), database)) {
-                
database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class).forEach(rule
 -> rule.put(logicDataSourceName, schemaName, entry.getKey()));
-            }
-            database.getSchema(schemaName).putTable(entry.getKey(), 
entry.getValue());
-        }
-    }
-    
-    private void addViewsToDataNode(final ShardingSphereDatabase database, 
final String schemaName, final String logicDataSourceName,
-                                    final Map<String, ShardingSphereTable> 
toBeAddedTables, final Map<String, ShardingSphereView> toBeAddedViews) {
-        for (Entry<String, ShardingSphereView> entry : 
toBeAddedViews.entrySet()) {
-            if (!Strings.isNullOrEmpty(logicDataSourceName) && 
TableRefreshUtils.isSingleTable(entry.getKey(), database)) {
-                
database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class).forEach(each
 -> each.put(logicDataSourceName, schemaName, entry.getKey()));
-            }
-            database.getSchema(schemaName).putTable(entry.getKey(), 
toBeAddedTables.get(entry.getKey().toLowerCase()));
-            database.getSchema(schemaName).putView(entry.getKey(), 
entry.getValue());
-        }
-    }
-    
-    private void removeSchemaMetaData(final ShardingSphereDatabase database, 
final String schemaName) {
-        ShardingSphereSchema schema = new 
ShardingSphereSchema(database.getSchema(schemaName).getTables(), 
database.getSchema(schemaName).getViews());
-        database.dropSchema(schemaName);
-        
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
 Collections.singletonList(schemaName), schema.getAllTableNames());
-    }
-    
-    private void removeDataNode(final Collection<MutableDataNodeRuleAttribute> 
ruleAttributes, final Collection<String> schemaNames, final Collection<String> 
tobeRemovedTables) {
-        tobeRemovedTables.forEach(each -> ruleAttributes.forEach(rule -> 
rule.remove(schemaNames, each)));
-    }
-    
-    private void removeDataNode(final ShardingSphereDatabase database, final 
String schemaName, final Collection<String> tobeRemovedTables, final 
Collection<String> tobeRemovedViews) {
-        removeTablesToDataNode(database, schemaName, tobeRemovedTables);
-        removeViewsToDataNode(database, schemaName, tobeRemovedTables, 
tobeRemovedViews);
-    }
-    
-    private void removeDataNode(final Collection<MutableDataNodeRuleAttribute> 
ruleAttributes, final String schemaName, final Collection<String> 
tobeRemovedTables) {
-        tobeRemovedTables.forEach(each -> ruleAttributes.forEach(rule -> 
rule.remove(schemaName, each)));
-    }
-    
-    private void removeTablesToDataNode(final ShardingSphereDatabase database, 
final String schemaName, final Collection<String> toBeDroppedTables) {
-        
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
 schemaName, toBeDroppedTables);
-        toBeDroppedTables.forEach(each -> 
database.getSchema(schemaName).removeTable(each));
-    }
-    
-    private void removeViewsToDataNode(final ShardingSphereDatabase database, 
final String schemaName, final Collection<String> toBeDroppedTables, final 
Collection<String> toBeDroppedViews) {
-        
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
 schemaName, toBeDroppedViews);
-        ShardingSphereSchema schema = database.getSchema(schemaName);
-        toBeDroppedTables.forEach(schema::removeTable);
-        toBeDroppedViews.forEach(schema::removeView);
-    }
-    
-    @Override
-    public void dropSchema(final String databaseName, final Collection<String> 
schemaNames) {
-        Collection<String> tobeRemovedTables = new LinkedHashSet<>();
-        Collection<String> tobeRemovedSchemas = new 
LinkedHashSet<>(schemaNames.size(), 1F);
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().getMetaData();
-        ShardingSphereDatabase database = metaData.getDatabase(databaseName);
-        for (String each : schemaNames) {
-            ShardingSphereSchema schema = new 
ShardingSphereSchema(database.getSchema(each).getTables(), 
database.getSchema(each).getViews());
-            database.dropSchema(each);
-            Optional.of(schema).ifPresent(optional -> 
tobeRemovedTables.addAll(optional.getAllTableNames()));
-            tobeRemovedSchemas.add(each.toLowerCase());
-        }
-        
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
 tobeRemovedSchemas, tobeRemovedTables);
-        metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-    }
-    
-    @Override
-    public void alterSchemaMetaData(final AlterSchemaMetaDataPOJO 
alterSchemaMetaDataPOJO) {
-        String databaseName = alterSchemaMetaDataPOJO.getDatabaseName();
-        String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
-        ShardingSphereMetaData metaData = 
contextManager.getMetaDataContexts().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.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
-        
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, 
schemaName, tables);
-        
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, 
schemaName, views);
-        alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> 
databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, 
schemaName, each));
-        alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -> 
databaseMetaDataService.getViewMetaDataPersistService().delete(databaseName, 
schemaName, each));
-    }
-    
-    @Override
-    public void registerStorageUnits(final String databaseName, final 
Map<String, DataSourcePoolProperties> toBeRegisteredProps) throws SQLException {
-        SwitchingResource switchingResource =
-                new 
ResourceSwitchManager().registerStorageUnit(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData(),
 toBeRegisteredProps);
-        
contextManager.getMetaDataContexts().getMetaData().getDatabases().putAll(contextManager.getConfigurationContextManager().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.getMetaDataContexts().getPersistService().getDatabaseMetaDataService()
-                        
.persistByAlterConfiguration(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
-        DatabaseBasedPersistService<Map<String, DataSourcePoolProperties>> 
dataSourceService = 
contextManager.getMetaDataContexts().getPersistService().getDataSourceUnitService();
-        
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().switchActiveVersion(dataSourceService.persistConfigurations(databaseName,
 toBeRegisteredProps));
-        clearServiceCache();
-    }
-    
-    @Override
-    public void alterStorageUnits(final String databaseName, final Map<String, 
DataSourcePoolProperties> toBeUpdatedProps) throws SQLException {
-        SwitchingResource switchingResource =
-                new 
ResourceSwitchManager().alterStorageUnit(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData(),
 toBeUpdatedProps);
-        
contextManager.getMetaDataContexts().getMetaData().getDatabases().putAll(contextManager.getConfigurationContextManager().createChangedDatabases(databaseName,
 true, switchingResource, null));
-        
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
-                .forEach(each -> ((GlobalRule) 
each).refresh(contextManager.getMetaDataContexts().getMetaData().getDatabases(),
 GlobalRuleChangedType.DATABASE_CHANGED));
-        DatabaseBasedPersistService<Map<String, DataSourcePoolProperties>> 
dataSourceService = 
contextManager.getMetaDataContexts().getPersistService().getDataSourceUnitService();
-        
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().switchActiveVersion(dataSourceService.persistConfigurations(databaseName,
 toBeUpdatedProps));
-        switchingResource.closeStaleDataSources();
-        clearServiceCache();
-    }
-    
-    @Override
-    public void unregisterStorageUnits(final String databaseName, final 
Collection<String> toBeDroppedStorageUnitNames) throws SQLException {
-        SwitchingResource switchingResource =
-                new 
ResourceSwitchManager().unregisterStorageUnit(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData(),
 toBeDroppedStorageUnitNames);
-        contextManager.getMetaDataContexts().getMetaData().getDatabases()
-                
.putAll(contextManager.getConfigurationContextManager().renewDatabase(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
 switchingResource));
-        MetaDataContexts reloadMetaDataContexts = 
contextManager.getConfigurationContextManager().createMetaDataContexts(databaseName,
 false, switchingResource, null);
-        
contextManager.getConfigurationContextManager().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);
-        switchingResource.closeStaleDataSources();
-        clearServiceCache();
-    }
-    
-    @Override
-    public void alterSingleRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
-        ruleConfigs.removeIf(each -> 
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
-        Collection<MetaDataVersion> metaDataVersions = 
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService()
-                
.persistConfigurations(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
 ruleConfigs);
-        
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
-        
contextManager.getConfigurationContextManager().alterRuleConfiguration(databaseName,
 ruleConfigs.iterator().next());
-        clearServiceCache();
-    }
-    
-    @Override
-    public Collection<MetaDataVersion> alterRuleConfiguration(final String 
databaseName, final RuleConfiguration toBeAlteredRuleConfig) {
-        if (null != toBeAlteredRuleConfig) {
-            Collection<MetaDataVersion> metaDataVersions = 
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService()
-                    
.persistConfigurations(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
 Collections.singletonList(toBeAlteredRuleConfig));
-            
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
-            sendDatabaseRuleChangedEvent(databaseName, metaDataVersions);
-            clearServiceCache();
-        }
-        return Collections.emptyList();
-    }
-    
-    private void sendDatabaseRuleChangedEvent(final String databaseName, final 
Collection<MetaDataVersion> metaDataVersions) {
-        for (MetaDataVersion each : metaDataVersions) {
-            sendDatabaseRuleChangedEvent(databaseName, each);
-        }
-    }
-    
-    private void sendDatabaseRuleChangedEvent(final String databaseName, final 
MetaDataVersion metaDataVersion) {
-        ruleConfigurationEventBuilder.build(databaseName, new 
DataChangedEvent(metaDataVersion.getActiveVersionNodePath(), 
metaDataVersion.getNextActiveVersion(), Type.UPDATED))
-                .ifPresent(optional -> 
contextManager.getComputeNodeInstanceContext().getEventBusContext().post(optional));
-    }
-    
-    @Override
-    public void removeRuleConfigurationItem(final String databaseName, final 
RuleConfiguration toBeRemovedRuleConfig) {
-        if (null != toBeRemovedRuleConfig) {
-            sendDatabaseRuleDeletedEvent(databaseName,
-                    
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().deleteConfigurations(databaseName,
 Collections.singleton(toBeRemovedRuleConfig)));
-            clearServiceCache();
-        }
-    }
-    
-    private void sendDatabaseRuleDeletedEvent(final String databaseName, final 
Collection<MetaDataVersion> metaDataVersions) {
-        for (MetaDataVersion each : metaDataVersions) {
-            sendDatabaseRuleDeletedEvent(databaseName, each);
-        }
-    }
-    
-    private void sendDatabaseRuleDeletedEvent(final String databaseName, final 
MetaDataVersion metaDataVersion) {
-        ruleConfigurationEventBuilder.build(databaseName, new 
DataChangedEvent(metaDataVersion.getActiveVersionNodePath(), "", Type.DELETED))
-                .ifPresent(optional -> 
contextManager.getComputeNodeInstanceContext().getEventBusContext().post(optional));
-    }
-    
-    @Override
-    public void removeRuleConfiguration(final String databaseName, final 
String ruleName) {
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().delete(databaseName,
 ruleName);
-        clearServiceCache();
-    }
-    
-    @Override
-    public void alterGlobalRuleConfiguration(final RuleConfiguration 
toBeAlteredRuleConfig) {
-        
contextManager.getConfigurationContextManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
-        
contextManager.getMetaDataContexts().getPersistService().getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
-        clearServiceCache();
-    }
-    
-    @Override
-    public void alterProperties(final Properties props) {
-        contextManager.getConfigurationContextManager().alterProperties(props);
-        
contextManager.getMetaDataContexts().getPersistService().getPropsService().persist(props);
-        clearServiceCache();
-    }
-    
-    private void clearServiceCache() {
-        OrderedServicesCache.clearCache();
-    }
-}
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
index 3ae4b4f118b..cd6c51bcb2c 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
@@ -283,7 +283,7 @@ public final class DatabaseConnector implements 
DatabaseBackendHandler {
     
     private void refreshMetaData(final ExecutionContext executionContext) 
throws SQLException {
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
-        new 
MetaDataRefreshEngine(contextManager.getComputeNodeInstanceContext().getModeContextManager(),
 database,
+        new 
MetaDataRefreshEngine(contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(),
 database,
                 
contextManager.getMetaDataContexts().getMetaData().getProps()).refresh(executionContext.getSqlStatementContext(),
 executionContext.getRouteContext().getRouteUnits());
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java
index ae29912bae9..76d5958d3a0 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/CreateDatabaseBackendHandler.java
@@ -38,7 +38,7 @@ public final class CreateDatabaseBackendHandler implements 
ProxyBackendHandler {
     @Override
     public ResponseHeader execute() throws SQLException {
         check(sqlStatement);
-        
ProxyContext.getInstance().getContextManager().getComputeNodeInstanceContext().getModeContextManager().createDatabase(sqlStatement.getDatabaseName());
+        
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().createDatabase(sqlStatement.getDatabaseName());
         return new UpdateResponseHeader(sqlStatement);
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java
index 9cad4748132..a58e748d81c 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java
@@ -52,7 +52,7 @@ public final class DropDatabaseBackendHandler implements 
ProxyBackendHandler {
             connectionSession.setCurrentDatabase(null);
         }
         if 
(ProxyContext.getInstance().databaseExists(sqlStatement.getDatabaseName())) {
-            
ProxyContext.getInstance().getContextManager().getComputeNodeInstanceContext().getModeContextManager().dropDatabase(sqlStatement.getDatabaseName());
+            
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(sqlStatement.getDatabaseName());
         }
         return new UpdateResponseHeader(sqlStatement);
     }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataExecutor.java
index af8b394ac8d..ea6567a6043 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataExecutor.java
@@ -73,8 +73,8 @@ public final class ImportMetaDataExecutor implements 
DistSQLUpdateExecutor<Impor
             return;
         }
         Collection<RuleConfiguration> rules = 
ruleConfigSwapperEngine.swapToRuleConfigurations(yamlServerConfig.getRules());
-        rules.forEach(each -> 
contextManager.getComputeNodeInstanceContext().getModeContextManager().alterGlobalRuleConfiguration(each));
-        
contextManager.getComputeNodeInstanceContext().getModeContextManager().alterProperties(yamlServerConfig.getProps());
+        rules.forEach(each -> 
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterGlobalRuleConfiguration(each));
+        
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterProperties(yamlServerConfig.getProps());
     }
     
     private void importDatabase(final ExportedMetaData exportedMetaData) {
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutor.java
index 7f964ad5667..f0384da4642 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutor.java
@@ -69,7 +69,7 @@ public final class SetDistVariableExecutor implements 
DistSQLUpdateExecutor<SetD
         props.putAll(metaDataContexts.getMetaData().getProps().getProps());
         
props.putAll(metaDataContexts.getMetaData().getTemporaryProps().getProps());
         props.put(propertyKey.getKey(), getValue(propertyKey, value));
-        
contextManager.getComputeNodeInstanceContext().getModeContextManager().alterProperties(props);
+        
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterProperties(props);
         refreshRootLogger(props);
         syncSQLShowToLoggingRule(propertyKey, metaDataContexts, value);
         syncSQLSimpleToLoggingRule(propertyKey, metaDataContexts, value);
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
index a679a4abed4..7df940380bb 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
@@ -97,7 +97,7 @@ public final class YamlDatabaseConfigurationImportExecutor {
     
     private void addDatabase(final String databaseName) {
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
-        
contextManager.getComputeNodeInstanceContext().getModeContextManager().createDatabase(databaseName);
+        
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().createDatabase(databaseName);
         DatabaseType protocolType = 
DatabaseTypeEngine.getProtocolType(Collections.emptyMap(), 
contextManager.getMetaDataContexts().getMetaData().getProps());
         
contextManager.getMetaDataContexts().getMetaData().addDatabase(databaseName, 
protocolType, contextManager.getMetaDataContexts().getMetaData().getProps());
     }
@@ -110,7 +110,7 @@ public final class YamlDatabaseConfigurationImportExecutor {
         }
         validateHandler.validate(propsMap);
         try {
-            
ProxyContext.getInstance().getContextManager().getComputeNodeInstanceContext().getModeContextManager().registerStorageUnits(databaseName,
 propsMap);
+            
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().registerStorageUnits(databaseName,
 propsMap);
         } catch (final SQLException ex) {
             throw new StorageUnitsOperateException("import", 
propsMap.keySet(), ex);
         }
@@ -160,6 +160,6 @@ public final class YamlDatabaseConfigurationImportExecutor {
     }
     
     private void dropDatabase(final String databaseName) {
-        
ProxyContext.getInstance().getContextManager().getComputeNodeInstanceContext().getModeContextManager().dropDatabase(databaseName);
+        
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(databaseName);
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 41a763ddc03..2e517c5a4fb 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -23,12 +23,12 @@ import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.AlterS
 import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.RegisterStorageUnitStatement;
 import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.UnregisterStorageUnitStatement;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 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.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.mode.service.MetaDataManagerPersistService;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
@@ -101,7 +101,7 @@ class DistSQLBackendHandlerFactoryTest {
         MetaDataContexts metaDataContexts = mockMetaDataContexts(database);
         when(result.getDatabase("foo_db")).thenReturn(database);
         when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
-        
when(result.getComputeNodeInstanceContext().getModeContextManager()).thenReturn(mock(ModeContextManager.class));
+        
when(result.getPersistServiceFacade().getMetaDataManagerPersistService()).thenReturn(mock(MetaDataManagerPersistService.class));
         
when(result.getComputeNodeInstanceContext().getModeConfiguration().getType()).thenReturn("Cluster");
         return result;
     }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
index 13a2bcb1f1c..602e04651f8 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
@@ -32,7 +32,6 @@ import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
-import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import org.apache.shardingsphere.infra.lock.LockContext;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -170,7 +169,7 @@ class ExportMetaDataExecutorTest {
                 new ConfigurationProperties(PropertiesBuilder.build(new 
Property(ConfigurationPropertyKey.SQL_SHOW.getKey(), "true")))));
         ComputeNodeInstanceContext computeNodeInstanceContext = new 
ComputeNodeInstanceContext(
                 new ComputeNodeInstance(mock(InstanceMetaData.class)), new 
StandaloneWorkerIdGenerator(), new ModeConfiguration("Standalone", null),
-                mock(ModeContextManager.class), mock(LockContext.class), new 
EventBusContext());
+                mock(LockContext.class), new EventBusContext());
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
         
when(result.getComputeNodeInstanceContext()).thenReturn(computeNodeInstanceContext);
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
index 1c35e033e2a..ed0ab2f3457 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
@@ -32,7 +32,6 @@ import 
org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.config.global.PropertiesPersistService;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import 
org.apache.shardingsphere.mode.manager.standalone.StandaloneModeContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.infra.exception.kernel.syntax.InvalidVariableValueException;
@@ -108,11 +107,9 @@ class SetDistVariableExecutorTest {
     private ContextManager mockContextManager() {
         MetaDataPersistService metaDataPersistService = 
mock(MetaDataPersistService.class, RETURNS_DEEP_STUBS);
         
when(metaDataPersistService.getPropsService()).thenReturn(mock(PropertiesPersistService.class));
-        StandaloneModeContextManager standaloneModeContextManager = new 
StandaloneModeContextManager();
         ContextManager result = new ContextManager(new 
MetaDataContexts(metaDataPersistService, new ShardingSphereMetaData()),
                 new ComputeNodeInstanceContext(new 
ComputeNodeInstance(mock(InstanceMetaData.class)), 
mock(WorkerIdGenerator.class),
-                        new ModeConfiguration("Standalone", null), 
standaloneModeContextManager, mock(LockContext.class), new EventBusContext()));
-        standaloneModeContextManager.setContextManager(result);
+                        new ModeConfiguration("Standalone", null), 
mock(LockContext.class), new EventBusContext()));
         return result;
     }
 }


Reply via email to