You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2024/01/28 11:08:52 UTC

(shardingsphere) branch master updated: Simplify DistSQLUpdateExecutor (#29890)

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

panjuan 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 678dac787a6 Simplify DistSQLUpdateExecutor (#29890)
678dac787a6 is described below

commit 678dac787a689ea342dd4bd6f7ef927c72377edb
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Jan 28 19:08:45 2024 +0800

    Simplify DistSQLUpdateExecutor (#29890)
    
    * Refactor DistSQLUpdateExecuteEngine
    
    * Refactor AlterStorageUnitExecutor
    
    * Simplify DistSQLUpdateExecutor
    
    * Fix test cases
---
 .../handler/type/DistSQLQueryExecuteEngine.java    | 21 +++++----
 .../handler/type/DistSQLUpdateExecuteEngine.java   | 26 +++++------
 .../handler/type/DistSQLUpdateExecutor.java        |  9 ----
 .../handler/update/MigrateTableExecutor.java       | 12 ++---
 ...RegisterMigrationSourceStorageUnitExecutor.java | 12 ++---
 .../distsql/ral/updatable/LockClusterExecutor.java | 32 +++++--------
 .../updatable/RefreshTableMetaDataExecutor.java    | 24 +++++-----
 .../ral/updatable/SetDistVariableExecutor.java     |  6 +--
 .../ral/updatable/SetInstanceStatusExecutor.java   | 10 ++---
 .../ral/updatable/UnlockClusterExecutor.java       | 16 +++----
 ...eadwriteSplittingStorageUnitStatusExecutor.java | 20 ++++-----
 .../rdl/resource/AlterStorageUnitExecutor.java     | 51 +++++++++------------
 .../rdl/resource/RegisterStorageUnitExecutor.java  | 44 +++++++++---------
 .../resource/UnregisterStorageUnitExecutor.java    | 21 ++++-----
 ...ttingStorageUnitStatusStatementUpdaterTest.java | 52 ----------------------
 .../ral/updatable/LockClusterUpdaterTest.java      |  8 ++--
 .../updatable/SetInstanceStatusUpdaterTest.java    | 12 ++---
 .../ral/updatable/UnlockClusterUpdaterTest.java    |  4 +-
 .../rdl/resource/AlterStorageUnitExecutorTest.java | 16 +++----
 .../resource/RegisterStorageUnitExecutorTest.java  | 12 ++---
 .../UnregisterStorageUnitExecutorTest.java         | 16 +++----
 21 files changed, 156 insertions(+), 268 deletions(-)

diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java
index 9d5c4c835bb..8412aeab575 100644
--- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java
+++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java
@@ -78,18 +78,17 @@ public abstract class DistSQLQueryExecuteEngine {
     
     @SuppressWarnings({"rawtypes", "unchecked"})
     private void setRule(final DistSQLExecutorRuleAware executor) {
-        Optional<ShardingSphereRule> globalRule = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRule(executor.getRuleClass());
-        if (globalRule.isPresent()) {
-            executor.setRule(globalRule.get());
-            return;
+        Optional<ShardingSphereRule> rule = findRule(executor.getRuleClass());
+        if (rule.isPresent()) {
+            executor.setRule(rule.get());
+        } else {
+            rows = Collections.emptyList();
         }
-        ShardingSphereDatabase database = getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement, currentDatabaseName));
-        Optional<ShardingSphereRule> databaseRule = database.getRuleMetaData().findSingleRule(executor.getRuleClass());
-        if (databaseRule.isPresent()) {
-            executor.setRule(databaseRule.get());
-            return;
-        }
-        rows = Collections.emptyList();
+    }
+    
+    private Optional<ShardingSphereRule> findRule(final Class<ShardingSphereRule> ruleClass) {
+        Optional<ShardingSphereRule> globalRule = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRule(ruleClass);
+        return globalRule.isPresent() ? globalRule : getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement, currentDatabaseName)).getRuleMetaData().findSingleRule(ruleClass);
     }
     
     protected abstract ShardingSphereDatabase getDatabase(String databaseName);
diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecuteEngine.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecuteEngine.java
index cd3288eebf2..90456a283ad 100644
--- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecuteEngine.java
+++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecuteEngine.java
@@ -63,28 +63,22 @@ public abstract class DistSQLUpdateExecuteEngine {
         executor.executeUpdate(sqlStatement, contextManager);
     }
     
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    private void checkBeforeUpdate(final DistSQLUpdateExecutor executor) {
+    private void checkBeforeUpdate(final DistSQLUpdateExecutor<?> executor) {
         if (null != executor.getClass().getAnnotation(DistSQLExecutorClusterModeRequired.class)) {
             ShardingSpherePreconditions.checkState(contextManager.getInstanceContext().isCluster(), () -> new UnsupportedSQLOperationException("Mode must be `Cluster`."));
         }
-        executor.checkBeforeUpdate(sqlStatement, contextManager);
     }
     
     @SuppressWarnings({"rawtypes", "unchecked"})
-    private void setRule(final DistSQLExecutorRuleAware executor) {
-        Optional<ShardingSphereRule> globalRule = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRule(executor.getRuleClass());
-        if (globalRule.isPresent()) {
-            executor.setRule(globalRule.get());
-            return;
-        }
-        ShardingSphereDatabase database = getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement, currentDatabaseName));
-        Optional<ShardingSphereRule> databaseRule = database.getRuleMetaData().findSingleRule(executor.getRuleClass());
-        if (databaseRule.isPresent()) {
-            executor.setRule(databaseRule.get());
-            return;
-        }
-        throw new UnsupportedSQLOperationException(String.format("The current database has no `%s` rules", executor.getRuleClass()));
+    private void setRule(final DistSQLExecutorRuleAware executor) throws UnsupportedSQLOperationException {
+        Optional<ShardingSphereRule> rule = findRule(executor.getRuleClass());
+        ShardingSpherePreconditions.checkState(rule.isPresent(), () -> new UnsupportedSQLOperationException(String.format("The current database has no `%s` rules", executor.getRuleClass())));
+        executor.setRule(rule.get());
+    }
+    
+    private Optional<ShardingSphereRule> findRule(final Class<ShardingSphereRule> ruleClass) {
+        Optional<ShardingSphereRule> globalRule = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRule(ruleClass);
+        return globalRule.isPresent() ? globalRule : getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement, currentDatabaseName)).getRuleMetaData().findSingleRule(ruleClass);
     }
     
     protected abstract ShardingSphereDatabase getDatabase(String databaseName);
diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecutor.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecutor.java
index 433c703b92e..b95f8a70cc6 100644
--- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecutor.java
+++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLUpdateExecutor.java
@@ -32,15 +32,6 @@ import java.sql.SQLException;
 @SingletonSPI
 public interface DistSQLUpdateExecutor<T extends DistSQLStatement> extends TypedSPI {
     
-    /**
-     * Check before update.
-     *
-     * @param sqlStatement SQL statement
-     * @param contextManager context manager
-     */
-    default void checkBeforeUpdate(T sqlStatement, ContextManager contextManager) {
-    }
-    
     /**
      * Execute update.
      *
diff --git a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableExecutor.java b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableExecutor.java
index 90c449d8e00..6d581014b77 100644
--- a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableExecutor.java
+++ b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableExecutor.java
@@ -39,19 +39,19 @@ public final class MigrateTableExecutor implements DistSQLUpdateExecutor<Migrate
     
     private ShardingSphereDatabase database;
     
-    @Override
-    public void checkBeforeUpdate(final MigrateTableStatement sqlStatement, final ContextManager contextManager) {
-        String targetDatabaseName = null == sqlStatement.getTargetDatabaseName() ? database.getName() : sqlStatement.getTargetDatabaseName();
-        ShardingSpherePreconditions.checkNotNull(targetDatabaseName, MissingRequiredTargetDatabaseException::new);
-    }
-    
     @Override
     public void executeUpdate(final MigrateTableStatement sqlStatement, final ContextManager contextManager) {
+        checkTargetDatabase(sqlStatement);
         String targetDatabaseName = null == sqlStatement.getTargetDatabaseName() ? database.getName() : sqlStatement.getTargetDatabaseName();
         MigrationJobAPI jobAPI = (MigrationJobAPI) TypedSPILoader.getService(TransmissionJobAPI.class, "MIGRATION");
         jobAPI.start(new PipelineContextKey(InstanceType.PROXY), new MigrateTableStatement(sqlStatement.getSourceTargetEntries(), targetDatabaseName));
     }
     
+    private void checkTargetDatabase(final MigrateTableStatement sqlStatement) {
+        String targetDatabaseName = null == sqlStatement.getTargetDatabaseName() ? database.getName() : sqlStatement.getTargetDatabaseName();
+        ShardingSpherePreconditions.checkNotNull(targetDatabaseName, MissingRequiredTargetDatabaseException::new);
+    }
+    
     @Override
     public Class<MigrateTableStatement> getType() {
         return MigrateTableStatement.class;
diff --git a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitExecutor.java b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitExecutor.java
index 90013082bda..1821db9ab01 100644
--- a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitExecutor.java
+++ b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitExecutor.java
@@ -49,14 +49,9 @@ public final class RegisterMigrationSourceStorageUnitExecutor implements DistSQL
     
     private final DataSourcePoolPropertiesValidator validateHandler = new DataSourcePoolPropertiesValidator();
     
-    @Override
-    public void checkBeforeUpdate(final RegisterMigrationSourceStorageUnitStatement sqlStatement, final ContextManager contextManager) {
-        ShardingSpherePreconditions.checkState(sqlStatement.getDataSources().stream().noneMatch(HostnameAndPortBasedDataSourceSegment.class::isInstance),
-                () -> new UnsupportedSQLOperationException("Not currently support add hostname and port, please use url"));
-    }
-    
     @Override
     public void executeUpdate(final RegisterMigrationSourceStorageUnitStatement sqlStatement, final ContextManager contextManager) {
+        checkDataSource(sqlStatement);
         List<DataSourceSegment> dataSources = new ArrayList<>(sqlStatement.getDataSources());
         URLBasedDataSourceSegment urlBasedDataSourceSegment = (URLBasedDataSourceSegment) dataSources.get(0);
         DatabaseType databaseType = DatabaseTypeFactory.get(urlBasedDataSourceSegment.getUrl());
@@ -65,6 +60,11 @@ public final class RegisterMigrationSourceStorageUnitExecutor implements DistSQL
         jobAPI.addMigrationSourceResources(new PipelineContextKey(InstanceType.PROXY), propsMap);
     }
     
+    private void checkDataSource(final RegisterMigrationSourceStorageUnitStatement sqlStatement) {
+        ShardingSpherePreconditions.checkState(sqlStatement.getDataSources().stream().noneMatch(HostnameAndPortBasedDataSourceSegment.class::isInstance),
+                () -> new UnsupportedSQLOperationException("Not currently support add hostname and port, please use url"));
+    }
+    
     @Override
     public Class<RegisterMigrationSourceStorageUnitStatement> getType() {
         return RegisterMigrationSourceStorageUnitStatement.class;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java
index e3a4b11665f..fb5d5bf2763 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java
@@ -36,29 +36,11 @@ import org.apache.shardingsphere.proxy.backend.lock.spi.ClusterLockStrategy;
 @DistSQLExecutorClusterModeRequired
 public final class LockClusterExecutor implements DistSQLUpdateExecutor<LockClusterStatement> {
     
-    @Override
-    public void checkBeforeUpdate(final LockClusterStatement sqlStatement, final ContextManager contextManager) {
-        checkState(contextManager);
-        checkAlgorithm(sqlStatement);
-    }
-    
-    private void checkState(final ContextManager contextManager) {
-        ClusterState currentState = contextManager.getClusterStateContext().getCurrentState();
-        ShardingSpherePreconditions.checkState(ClusterState.OK == currentState, () -> new IllegalStateException("Cluster is already locked"));
-    }
-    
-    private void checkAlgorithm(final LockClusterStatement sqlStatement) {
-        ShardingSpherePreconditions.checkState(isStrategyDefinitionExists(sqlStatement), MissingRequiredAlgorithmException::new);
-        TypedSPILoader.checkService(ClusterLockStrategy.class, sqlStatement.getLockStrategy().getName(), sqlStatement.getLockStrategy().getProps());
-    }
-    
-    private boolean isStrategyDefinitionExists(final LockClusterStatement sqlStatement) {
-        return null != sqlStatement.getLockStrategy();
-    }
-    
     @Override
     @SuppressWarnings({"unchecked", "rawtypes"})
     public void executeUpdate(final LockClusterStatement sqlStatement, final ContextManager contextManager) {
+        checkState(contextManager);
+        checkAlgorithm(sqlStatement);
         LockContext lockContext = contextManager.getInstanceContext().getLockContext();
         GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockNames.CLUSTER_LOCK.getLockName());
         if (lockContext.tryLock(lockDefinition, 3000L)) {
@@ -71,6 +53,16 @@ public final class LockClusterExecutor implements DistSQLUpdateExecutor<LockClus
         }
     }
     
+    private void checkState(final ContextManager contextManager) {
+        ClusterState currentState = contextManager.getClusterStateContext().getCurrentState();
+        ShardingSpherePreconditions.checkState(ClusterState.OK == currentState, () -> new IllegalStateException("Cluster is already locked"));
+    }
+    
+    private void checkAlgorithm(final LockClusterStatement sqlStatement) {
+        ShardingSpherePreconditions.checkNotNull(sqlStatement.getLockStrategy(), MissingRequiredAlgorithmException::new);
+        TypedSPILoader.checkService(ClusterLockStrategy.class, sqlStatement.getLockStrategy().getName(), sqlStatement.getLockStrategy().getProps());
+    }
+    
     @Override
     public Class<LockClusterStatement> getType() {
         return LockClusterStatement.class;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataExecutor.java
index 62a3a096e01..7d417532c34 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataExecutor.java
@@ -41,22 +41,9 @@ public final class RefreshTableMetaDataExecutor implements DistSQLUpdateExecutor
     
     private ShardingSphereDatabase database;
     
-    @Override
-    public void checkBeforeUpdate(final RefreshTableMetaDataStatement sqlStatement, final ContextManager contextManager) {
-        checkStorageUnit(contextManager.getStorageUnits(database.getName()), sqlStatement);
-    }
-    
-    private void checkStorageUnit(final Map<String, StorageUnit> storageUnits, final RefreshTableMetaDataStatement sqlStatement) {
-        ShardingSpherePreconditions.checkState(!storageUnits.isEmpty(), () -> new EmptyStorageUnitException(database.getName()));
-        if (sqlStatement.getStorageUnitName().isPresent()) {
-            String storageUnitName = sqlStatement.getStorageUnitName().get();
-            ShardingSpherePreconditions.checkState(
-                    storageUnits.containsKey(storageUnitName), () -> new MissingRequiredStorageUnitsException(database.getName(), Collections.singleton(storageUnitName)));
-        }
-    }
-    
     @Override
     public void executeUpdate(final RefreshTableMetaDataStatement sqlStatement, final ContextManager contextManager) throws SQLException {
+        checkStorageUnit(contextManager.getStorageUnits(database.getName()), sqlStatement);
         String schemaName = getSchemaName(sqlStatement);
         if (sqlStatement.getStorageUnitName().isPresent()) {
             if (sqlStatement.getTableName().isPresent()) {
@@ -73,6 +60,15 @@ public final class RefreshTableMetaDataExecutor implements DistSQLUpdateExecutor
         }
     }
     
+    private void checkStorageUnit(final Map<String, StorageUnit> storageUnits, final RefreshTableMetaDataStatement sqlStatement) {
+        ShardingSpherePreconditions.checkState(!storageUnits.isEmpty(), () -> new EmptyStorageUnitException(database.getName()));
+        if (sqlStatement.getStorageUnitName().isPresent()) {
+            String storageUnitName = sqlStatement.getStorageUnitName().get();
+            ShardingSpherePreconditions.checkState(
+                    storageUnits.containsKey(storageUnitName), () -> new MissingRequiredStorageUnitsException(database.getName(), Collections.singleton(storageUnitName)));
+        }
+    }
+    
     private String getSchemaName(final RefreshTableMetaDataStatement sqlStatement) {
         return sqlStatement.getSchemaName().isPresent() ? sqlStatement.getSchemaName().get() : new DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(database.getName());
     }
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 c40ca2a19bf..00589788236 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
@@ -45,13 +45,9 @@ import java.util.Properties;
  */
 public final class SetDistVariableExecutor implements DistSQLUpdateExecutor<SetDistVariableStatement> {
     
-    @Override
-    public void checkBeforeUpdate(final SetDistVariableStatement sqlStatement, final ContextManager contextManager) {
-        ShardingSpherePreconditions.checkState(getEnumType(sqlStatement.getName()) instanceof TypedPropertyKey, () -> new UnsupportedVariableException(sqlStatement.getName()));
-    }
-    
     @Override
     public void executeUpdate(final SetDistVariableStatement sqlStatement, final ContextManager contextManager) throws SQLException {
+        ShardingSpherePreconditions.checkState(getEnumType(sqlStatement.getName()) instanceof TypedPropertyKey, () -> new UnsupportedVariableException(sqlStatement.getName()));
         handleConfigurationProperty(contextManager, (TypedPropertyKey) getEnumType(sqlStatement.getName()), sqlStatement.getValue());
     }
     
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusExecutor.java
index 4907c30b185..2d0eb3c7573 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusExecutor.java
@@ -33,12 +33,14 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
 public final class SetInstanceStatusExecutor implements DistSQLUpdateExecutor<SetInstanceStatusStatement> {
     
     @Override
-    public void checkBeforeUpdate(final SetInstanceStatusStatement sqlStatement, final ContextManager contextManager) {
+    public void executeUpdate(final SetInstanceStatusStatement sqlStatement, final ContextManager contextManager) {
         if ("DISABLE".equals(sqlStatement.getStatus())) {
             checkDisablingIsValid(contextManager, sqlStatement.getInstanceId());
         } else {
             checkEnablingIsValid(contextManager, sqlStatement.getInstanceId());
         }
+        contextManager.getInstanceContext().getEventBusContext().post(
+                new ComputeNodeStatusChangedEvent(sqlStatement.getInstanceId(), "DISABLE".equals(sqlStatement.getStatus()) ? InstanceState.CIRCUIT_BREAK : InstanceState.OK));
     }
     
     private void checkEnablingIsValid(final ContextManager contextManager, final String instanceId) {
@@ -55,12 +57,6 @@ public final class SetInstanceStatusExecutor implements DistSQLUpdateExecutor<Se
                 () -> new UnsupportedSQLOperationException(String.format("`%s` compute node has been disabled", instanceId)));
     }
     
-    @Override
-    public void executeUpdate(final SetInstanceStatusStatement sqlStatement, final ContextManager contextManager) {
-        contextManager.getInstanceContext().getEventBusContext().post(
-                new ComputeNodeStatusChangedEvent(sqlStatement.getInstanceId(), "DISABLE".equals(sqlStatement.getStatus()) ? InstanceState.CIRCUIT_BREAK : InstanceState.OK));
-    }
-    
     @Override
     public Class<SetInstanceStatusStatement> getType() {
         return SetInstanceStatusStatement.class;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java
index 398b081c3f3..5c584b11951 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java
@@ -34,20 +34,10 @@ import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.statu
 @DistSQLExecutorClusterModeRequired
 public final class UnlockClusterExecutor implements DistSQLUpdateExecutor<UnlockClusterStatement> {
     
-    @Override
-    public void checkBeforeUpdate(final UnlockClusterStatement sqlStatement, final ContextManager contextManager) {
-        checkState(contextManager);
-    }
-    
-    private void checkState(final ContextManager contextManager) {
-        ClusterState currentState = contextManager.getClusterStateContext().getCurrentState();
-        ShardingSpherePreconditions.checkState(ClusterState.OK != currentState, () -> new IllegalStateException("Cluster is not locked"));
-    }
-    
     @Override
     @SuppressWarnings({"unchecked", "rawtypes"})
     public void executeUpdate(final UnlockClusterStatement sqlStatement, final ContextManager contextManager) {
-        
+        checkState(contextManager);
         LockContext lockContext = contextManager.getInstanceContext().getLockContext();
         GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockNames.CLUSTER_LOCK.getLockName());
         if (lockContext.tryLock(lockDefinition, 3000L)) {
@@ -61,6 +51,10 @@ public final class UnlockClusterExecutor implements DistSQLUpdateExecutor<Unlock
         }
     }
     
+    private void checkState(final ContextManager contextManager) {
+        ShardingSpherePreconditions.checkState(ClusterState.OK != contextManager.getClusterStateContext().getCurrentState(), () -> new IllegalStateException("Cluster is not locked"));
+    }
+    
     @Override
     public Class<UnlockClusterStatement> getType() {
         return UnlockClusterStatement.class;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/readwritesplitting/AlterReadwriteSplittingStorageUnitStatusExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/readwritesplitting/AlterReadwriteSplittingStorageUnitStatusExecutor.java
index 5ede01f532e..7db6f3497f0 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/readwritesplitting/AlterReadwriteSplittingStorageUnitStatusExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/readwritesplitting/AlterReadwriteSplittingStorageUnitStatusExecutor.java
@@ -77,9 +77,9 @@ public final class AlterReadwriteSplittingStorageUnitStatusExecutor
         Map<String, String> autoAwareResources = getAutoAwareResources(exportedData);
         boolean isDisable = DISABLE.equals(sqlStatement.getStatus());
         if (isDisable) {
-            checkDisable(contextManager, database.getName(), disabledStorageUnits.keySet(), toBeUpdatedStorageUnit, replicaStorageUnits);
+            checkDisable(disabledStorageUnits.keySet(), toBeUpdatedStorageUnit, replicaStorageUnits);
         } else {
-            checkEnable(contextManager, database.getName(), disabledStorageUnits, toBeUpdatedStorageUnit);
+            checkEnable(disabledStorageUnits, toBeUpdatedStorageUnit);
         }
         Collection<String> groupNames = getGroupNames(toBeUpdatedStorageUnit, replicaStorageUnits, disabledStorageUnits, autoAwareResources);
         String groupName = sqlStatement.getGroupName();
@@ -130,9 +130,8 @@ public final class AlterReadwriteSplittingStorageUnitStatusExecutor
         return result;
     }
     
-    private void checkDisable(final ContextManager contextManager, final String databaseName, final Collection<String> disabledStorageUnits, final String toBeDisabledStorageUnit,
-                              final Map<String, String> replicaResources) {
-        checkResourceExists(contextManager, databaseName, toBeDisabledStorageUnit);
+    private void checkDisable(final Collection<String> disabledStorageUnits, final String toBeDisabledStorageUnit, final Map<String, String> replicaResources) {
+        checkResourceExists(toBeDisabledStorageUnit);
         checkIsDisabled(replicaResources, disabledStorageUnits, toBeDisabledStorageUnit);
         checkIsReplicaResource(replicaResources, toBeDisabledStorageUnit);
     }
@@ -153,15 +152,14 @@ public final class AlterReadwriteSplittingStorageUnitStatusExecutor
                 () -> new UnsupportedSQLOperationException(String.format("The current database does not exist the group `%s`", groupName)));
     }
     
-    private void checkEnable(final ContextManager contextManager, final String databaseName, final Map<String, String> disabledResources, final String toBeEnabledResource) {
-        checkResourceExists(contextManager, databaseName, toBeEnabledResource);
+    private void checkEnable(final Map<String, String> disabledResources, final String toBeEnabledResource) {
+        checkResourceExists(toBeEnabledResource);
         checkIsNotDisabled(disabledResources.keySet(), toBeEnabledResource);
     }
     
-    private void checkResourceExists(final ContextManager contextManager, final String databaseName, final String toBeDisabledResource) {
-        Collection<String> notExistedResources = contextManager
-                .getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getNotExistedDataSources(Collections.singleton(toBeDisabledResource));
-        ShardingSpherePreconditions.checkState(notExistedResources.isEmpty(), () -> new MissingRequiredStorageUnitsException(databaseName, Collections.singleton(toBeDisabledResource)));
+    private void checkResourceExists(final String toBeDisabledResource) {
+        Collection<String> notExistedResources = database.getResourceMetaData().getNotExistedDataSources(Collections.singleton(toBeDisabledResource));
+        ShardingSpherePreconditions.checkState(notExistedResources.isEmpty(), () -> new MissingRequiredStorageUnitsException(database.getName(), Collections.singleton(toBeDisabledResource)));
     }
     
     private void checkIsNotDisabled(final Collection<String> disabledResources, final String toBeEnabledResource) {
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutor.java
index 16a083bd462..e19d430aa46 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutor.java
@@ -51,8 +51,8 @@ import java.util.stream.Collectors;
 /**
  * Alter storage unit executor.
  */
-@Slf4j
 @Setter
+@Slf4j
 public final class AlterStorageUnitExecutor implements DistSQLUpdateExecutor<AlterStorageUnitStatement>, DistSQLExecutorDatabaseAware {
     
     private final DataSourcePoolPropertiesValidator validateHandler = new DataSourcePoolPropertiesValidator();
@@ -60,36 +60,38 @@ public final class AlterStorageUnitExecutor implements DistSQLUpdateExecutor<Alt
     private ShardingSphereDatabase database;
     
     @Override
-    public void checkBeforeUpdate(final AlterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
-        Collection<String> toBeAlteredStorageUnitNames = getToBeAlteredStorageUnitNames(sqlStatement);
+    public void executeUpdate(final AlterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
+        checkBefore(sqlStatement);
+        Map<String, DataSourcePoolProperties> propsMap = DataSourceSegmentsConverter.convert(database.getProtocolType(), sqlStatement.getStorageUnits());
+        validateHandler.validate(propsMap);
+        try {
+            contextManager.getInstanceContext().getModeContextManager().alterStorageUnits(database.getName(), propsMap);
+        } catch (final SQLException | ShardingSphereExternalException ex) {
+            log.error("Alter storage unit failed", ex);
+            throw new InvalidStorageUnitsException(Collections.singleton(ex.getMessage()));
+        }
+    }
+    
+    private void checkBefore(final AlterStorageUnitStatement sqlStatement) {
+        Collection<String> toBeAlteredStorageUnitNames = sqlStatement.getStorageUnits().stream().map(DataSourceSegment::getName).collect(Collectors.toList());
         checkDuplicatedStorageUnitNames(toBeAlteredStorageUnitNames);
         checkStorageUnitNameExisted(toBeAlteredStorageUnitNames);
         checkDatabase(sqlStatement);
     }
     
-    private Collection<String> getToBeAlteredStorageUnitNames(final AlterStorageUnitStatement sqlStatement) {
-        return sqlStatement.getStorageUnits().stream().map(DataSourceSegment::getName).collect(Collectors.toList());
-    }
-    
     private void checkDuplicatedStorageUnitNames(final Collection<String> storageUnitNames) {
-        Collection<String> duplicatedStorageUnitNames = getDuplicatedStorageUnitNames(storageUnitNames);
+        Collection<String> duplicatedStorageUnitNames = storageUnitNames.stream().filter(each -> storageUnitNames.stream().filter(each::equals).count() > 1).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(duplicatedStorageUnitNames.isEmpty(), () -> new DuplicateStorageUnitException(duplicatedStorageUnitNames));
     }
     
-    private Collection<String> getDuplicatedStorageUnitNames(final Collection<String> storageUnitNames) {
-        return storageUnitNames.stream().filter(each -> storageUnitNames.stream().filter(each::equals).count() > 1).collect(Collectors.toList());
-    }
-    
     private void checkStorageUnitNameExisted(final Collection<String> storageUnitNames) {
-        Map<String, StorageUnit> storageUnits = database.getResourceMetaData().getStorageUnits();
-        Collection<String> notExistedStorageUnitNames = storageUnitNames.stream().filter(each -> !storageUnits.containsKey(each)).collect(Collectors.toList());
+        Collection<String> notExistedStorageUnitNames = storageUnitNames.stream().filter(each -> !database.getResourceMetaData().getStorageUnits().containsKey(each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(notExistedStorageUnitNames.isEmpty(), () -> new MissingRequiredStorageUnitsException(database.getName(), notExistedStorageUnitNames));
     }
     
     private void checkDatabase(final AlterStorageUnitStatement sqlStatement) {
-        Map<String, StorageUnit> storageUnits = database.getResourceMetaData().getStorageUnits();
         Collection<String> invalidStorageUnitNames = sqlStatement.getStorageUnits().stream().collect(Collectors.toMap(DataSourceSegment::getName, each -> each)).entrySet().stream()
-                .filter(each -> !isSameDatabase(each.getValue(), storageUnits.get(each.getKey()))).map(Entry::getKey).collect(Collectors.toSet());
+                .filter(each -> !isSameDatabase(each.getValue(), database.getResourceMetaData().getStorageUnits().get(each.getKey()))).map(Entry::getKey).collect(Collectors.toSet());
         ShardingSpherePreconditions.checkState(invalidStorageUnitNames.isEmpty(),
                 () -> new InvalidStorageUnitsException(Collections.singleton(String.format("Can not alter the database of %s", invalidStorageUnitNames))));
     }
@@ -108,21 +110,8 @@ public final class AlterStorageUnitExecutor implements DistSQLUpdateExecutor<Alt
             port = String.valueOf(segmentJdbcUrl.getPort());
             database = segmentJdbcUrl.getDatabase();
         }
-        ConnectionProperties connectionProperties = storageUnit.getConnectionProperties();
-        return Objects.equals(hostName, connectionProperties.getHostname()) && Objects.equals(port, String.valueOf(connectionProperties.getPort()))
-                && Objects.equals(database, connectionProperties.getCatalog());
-    }
-    
-    @Override
-    public void executeUpdate(final AlterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
-        Map<String, DataSourcePoolProperties> propsMap = DataSourceSegmentsConverter.convert(database.getProtocolType(), sqlStatement.getStorageUnits());
-        validateHandler.validate(propsMap);
-        try {
-            contextManager.getInstanceContext().getModeContextManager().alterStorageUnits(database.getName(), propsMap);
-        } catch (final SQLException | ShardingSphereExternalException ex) {
-            log.error("Alter storage unit failed", ex);
-            throw new InvalidStorageUnitsException(Collections.singleton(ex.getMessage()));
-        }
+        ConnectionProperties connectionProps = storageUnit.getConnectionProperties();
+        return Objects.equals(hostName, connectionProps.getHostname()) && Objects.equals(port, String.valueOf(connectionProps.getPort())) && Objects.equals(database, connectionProps.getCatalog());
     }
     
     @Override
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutor.java
index a48f3277c7d..9e4fbe14919 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutor.java
@@ -54,7 +54,28 @@ public final class RegisterStorageUnitExecutor implements DistSQLUpdateExecutor<
     private ShardingSphereDatabase database;
     
     @Override
-    public void checkBeforeUpdate(final RegisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
+    public void executeUpdate(final RegisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
+        checkDataSource(sqlStatement, contextManager);
+        Map<String, DataSourcePoolProperties> propsMap = DataSourceSegmentsConverter.convert(database.getProtocolType(), sqlStatement.getStorageUnits());
+        if (sqlStatement.isIfNotExists()) {
+            Collection<String> currentStorageUnits = getCurrentStorageUnitNames(contextManager);
+            Collection<String> logicalDataSourceNames = getLogicalDataSourceNames();
+            propsMap.keySet().removeIf(currentStorageUnits::contains);
+            propsMap.keySet().removeIf(logicalDataSourceNames::contains);
+        }
+        if (propsMap.isEmpty()) {
+            return;
+        }
+        validateHandler.validate(propsMap);
+        try {
+            contextManager.getInstanceContext().getModeContextManager().registerStorageUnits(database.getName(), propsMap);
+        } catch (final SQLException | ShardingSphereExternalException ex) {
+            log.error("Register storage unit failed", ex);
+            throw new InvalidStorageUnitsException(Collections.singleton(ex.getMessage()));
+        }
+    }
+    
+    private void checkDataSource(final RegisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
         if (!sqlStatement.isIfNotExists()) {
             Collection<String> dataSourceNames = new ArrayList<>(sqlStatement.getStorageUnits().size());
             checkDuplicatedDataSourceNames(contextManager, dataSourceNames, sqlStatement);
@@ -91,27 +112,6 @@ public final class RegisterStorageUnitExecutor implements DistSQLUpdateExecutor<
         return database.getRuleMetaData().findRules(DataSourceContainedRule.class).stream().map(each -> each.getDataSourceMapper().keySet()).flatMap(Collection::stream).collect(Collectors.toList());
     }
     
-    @Override
-    public void executeUpdate(final RegisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
-        Map<String, DataSourcePoolProperties> propsMap = DataSourceSegmentsConverter.convert(database.getProtocolType(), sqlStatement.getStorageUnits());
-        if (sqlStatement.isIfNotExists()) {
-            Collection<String> currentStorageUnits = getCurrentStorageUnitNames(contextManager);
-            Collection<String> logicalDataSourceNames = getLogicalDataSourceNames();
-            propsMap.keySet().removeIf(currentStorageUnits::contains);
-            propsMap.keySet().removeIf(logicalDataSourceNames::contains);
-        }
-        if (propsMap.isEmpty()) {
-            return;
-        }
-        validateHandler.validate(propsMap);
-        try {
-            contextManager.getInstanceContext().getModeContextManager().registerStorageUnits(database.getName(), propsMap);
-        } catch (final SQLException | ShardingSphereExternalException ex) {
-            log.error("Register storage unit failed", ex);
-            throw new InvalidStorageUnitsException(Collections.singleton(ex.getMessage()));
-        }
-    }
-    
     @Override
     public Class<RegisterStorageUnitStatement> getType() {
         return RegisterStorageUnitStatement.class;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutor.java
index cfacd4a4b40..6223898bb06 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutor.java
@@ -52,11 +52,17 @@ public final class UnregisterStorageUnitExecutor implements DistSQLUpdateExecuto
     private ShardingSphereDatabase database;
     
     @Override
-    public void checkBeforeUpdate(final UnregisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
+    public void executeUpdate(final UnregisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
         if (!sqlStatement.isIfExists()) {
             checkExisted(sqlStatement.getStorageUnitNames());
         }
         checkInUsed(sqlStatement);
+        try {
+            contextManager.getInstanceContext().getModeContextManager().unregisterStorageUnits(database.getName(), sqlStatement.getStorageUnitNames());
+        } catch (final SQLException | ShardingSphereServerException ex) {
+            log.error("Unregister storage unit failed", ex);
+            throw new InvalidStorageUnitsException(Collections.singleton(ex.getMessage()));
+        }
     }
     
     private void checkExisted(final Collection<String> storageUnitNames) {
@@ -91,8 +97,7 @@ public final class UnregisterStorageUnitExecutor implements DistSQLUpdateExecuto
         return result;
     }
     
-    private void checkInUsedIgnoreTables(final Collection<String> inUsedResourceNames,
-                                         final Map<String, Collection<Class<? extends ShardingSphereRule>>> inUsedStorageUnits,
+    private void checkInUsedIgnoreTables(final Collection<String> inUsedResourceNames, final Map<String, Collection<Class<? extends ShardingSphereRule>>> inUsedStorageUnits,
                                          final Collection<Class<? extends ShardingSphereRule>> ignoreShardingSphereRules) {
         for (String each : inUsedResourceNames) {
             Collection<Class<? extends ShardingSphereRule>> inUsedRules = inUsedStorageUnits.get(each);
@@ -101,16 +106,6 @@ public final class UnregisterStorageUnitExecutor implements DistSQLUpdateExecuto
         }
     }
     
-    @Override
-    public void executeUpdate(final UnregisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {
-        try {
-            contextManager.getInstanceContext().getModeContextManager().unregisterStorageUnits(database.getName(), sqlStatement.getStorageUnitNames());
-        } catch (final SQLException | ShardingSphereServerException ex) {
-            log.error("Unregister storage unit failed", ex);
-            throw new InvalidStorageUnitsException(Collections.singleton(ex.getMessage()));
-        }
-    }
-    
     @Override
     public Class<UnregisterStorageUnitStatement> getType() {
         return UnregisterStorageUnitStatement.class;
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest.java
deleted file mode 100644
index d051f71bd0c..00000000000
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest.java
+++ /dev/null
@@ -1,52 +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.proxy.backend.handler.distsql.ral.updatable;
-
-import org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.readwritesplitting.AlterReadwriteSplittingStorageUnitStatusExecutor;
-import org.apache.shardingsphere.readwritesplitting.distsql.statement.status.AlterReadwriteSplittingStorageUnitStatusStatement;
-import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
-import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
-import org.apache.shardingsphere.test.mock.AutoMockExtension;
-import org.apache.shardingsphere.test.mock.StaticMockSettings;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(ProxyContext.class)
-class AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest {
-    
-    @Test
-    void assertCheckBeforeUpdateWithNoReadwriteSplittingRule() {
-        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
-        when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
-        AlterReadwriteSplittingStorageUnitStatusExecutor executor = new AlterReadwriteSplittingStorageUnitStatusExecutor();
-        executor.setDatabase(database);
-        assertThrows(UnsupportedSQLOperationException.class,
-                () -> executor.checkBeforeUpdate(new AlterReadwriteSplittingStorageUnitStatusStatement(
-                        new DatabaseSegment(1, 1, new IdentifierValue("foo_db")), "group", "read_ds", "ENABLE"), mock(ContextManager.class, RETURNS_DEEP_STUBS)));
-    }
-}
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java
index c4ef19b599e..03af35d1afe 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java
@@ -40,18 +40,18 @@ import static org.mockito.Mockito.when;
 class LockClusterUpdaterTest {
     
     @Test
-    void assertCheckBeforeUpdateWithLockedCluster() {
+    void assertExecuteUpdateWithLockedCluster() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getClusterStateContext().getCurrentState()).thenReturn(ClusterState.UNAVAILABLE);
         LockClusterExecutor executor = new LockClusterExecutor();
-        assertThrows(IllegalStateException.class, () -> executor.checkBeforeUpdate(new LockClusterStatement(new AlgorithmSegment("FOO", new Properties())), contextManager));
+        assertThrows(IllegalStateException.class, () -> executor.executeUpdate(new LockClusterStatement(new AlgorithmSegment("FOO", new Properties())), contextManager));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithWrongAlgorithm() {
+    void assertExecuteUpdateWithWrongAlgorithm() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getClusterStateContext().getCurrentState()).thenReturn(ClusterState.OK);
         LockClusterExecutor executor = new LockClusterExecutor();
-        assertThrows(ServiceProviderNotFoundException.class, () -> executor.checkBeforeUpdate(new LockClusterStatement(new AlgorithmSegment("FOO", new Properties())), contextManager));
+        assertThrows(ServiceProviderNotFoundException.class, () -> executor.executeUpdate(new LockClusterStatement(new AlgorithmSegment("FOO", new Properties())), contextManager));
     }
 }
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java
index fa00bd4e680..b1ad292722a 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java
@@ -31,26 +31,26 @@ import static org.mockito.Mockito.when;
 class SetInstanceStatusUpdaterTest {
     
     @Test
-    void assertCheckBeforeUpdateWithNotExistsInstanceID() {
+    void assertExecuteUpdateWithNotExistsInstanceID() {
         SetInstanceStatusExecutor executor = new SetInstanceStatusExecutor();
-        assertThrows(UnsupportedSQLOperationException.class, () -> executor.checkBeforeUpdate(new SetInstanceStatusStatement("ENABLE", "instanceID"), mock(ContextManager.class, RETURNS_DEEP_STUBS)));
+        assertThrows(UnsupportedSQLOperationException.class, () -> executor.executeUpdate(new SetInstanceStatusStatement("ENABLE", "instanceID"), mock(ContextManager.class, RETURNS_DEEP_STUBS)));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithCurrentUsingInstance() {
+    void assertExecuteUpdateWithCurrentUsingInstance() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getInstanceContext().getInstance().getCurrentInstanceId()).thenReturn("instanceID");
         SetInstanceStatusExecutor executor = new SetInstanceStatusExecutor();
-        assertThrows(UnsupportedSQLOperationException.class, () -> executor.checkBeforeUpdate(new SetInstanceStatusStatement("DISABLE", "instanceID"), contextManager));
+        assertThrows(UnsupportedSQLOperationException.class, () -> executor.executeUpdate(new SetInstanceStatusStatement("DISABLE", "instanceID"), contextManager));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithAlreadyDisableInstance() {
+    void assertExecuteUpdateWithAlreadyDisableInstance() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getInstanceContext().getInstance().getCurrentInstanceId()).thenReturn("currentInstance");
         when(contextManager.getInstanceContext().getComputeNodeInstanceById("instanceID").isPresent()).thenReturn(true);
         when(contextManager.getInstanceContext().getComputeNodeInstanceById("instanceID").get().getState().getCurrentState()).thenReturn(InstanceState.CIRCUIT_BREAK);
         SetInstanceStatusExecutor executor = new SetInstanceStatusExecutor();
-        assertThrows(UnsupportedSQLOperationException.class, () -> executor.checkBeforeUpdate(new SetInstanceStatusStatement("DISABLE", "instanceID"), contextManager));
+        assertThrows(UnsupportedSQLOperationException.class, () -> executor.executeUpdate(new SetInstanceStatusStatement("DISABLE", "instanceID"), contextManager));
     }
 }
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java
index b9ff89e1ca1..99cf52eb10f 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java
@@ -36,11 +36,11 @@ import static org.mockito.Mockito.when;
 class UnlockClusterUpdaterTest {
     
     @Test
-    void assertCheckBeforeUpdateWithNotLockedCluster() {
+    void assertExecuteUpdateWithNotLockedCluster() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getClusterStateContext().getCurrentState()).thenReturn(ClusterState.OK);
         when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         UnlockClusterExecutor executor = new UnlockClusterExecutor();
-        assertThrows(IllegalStateException.class, () -> executor.checkBeforeUpdate(new UnlockClusterStatement(), contextManager));
+        assertThrows(IllegalStateException.class, () -> executor.executeUpdate(new UnlockClusterStatement(), contextManager));
     }
 }
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutorTest.java
index 39ef83fb849..3cda107ee25 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitExecutorTest.java
@@ -66,7 +66,7 @@ class AlterStorageUnitExecutorTest {
     }
     
     @Test
-    void assertCheckBeforeUpdate() {
+    void assertExecuteUpdate() {
         ResourceMetaData resourceMetaData = mock(ResourceMetaData.class, RETURNS_DEEP_STUBS);
         StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
         ConnectionProperties connectionProperties = mockConnectionProperties("ds_0");
@@ -74,26 +74,26 @@ class AlterStorageUnitExecutorTest {
         when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         executor.setDatabase(database);
-        assertDoesNotThrow(() -> executor.checkBeforeUpdate(createAlterStorageUnitStatement("ds_0"), mockContextManager(mock(MetaDataContexts.class, RETURNS_DEEP_STUBS))));
+        assertDoesNotThrow(() -> executor.executeUpdate(createAlterStorageUnitStatement("ds_0"), mockContextManager(mock(MetaDataContexts.class, RETURNS_DEEP_STUBS))));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithDuplicateStorageUnitNames() {
+    void assertExecuteUpdateWithDuplicateStorageUnitNames() {
         executor.setDatabase(database);
-        assertThrows(DuplicateStorageUnitException.class, () -> executor.checkBeforeUpdate(createAlterStorageUnitStatementWithDuplicateStorageUnitNames(), mock(ContextManager.class)));
+        assertThrows(DuplicateStorageUnitException.class, () -> executor.executeUpdate(createAlterStorageUnitStatementWithDuplicateStorageUnitNames(), mock(ContextManager.class)));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithNotExistedStorageUnitNames() {
+    void assertExecuteUpdateWithNotExistedStorageUnitNames() {
         MetaDataContexts metaDataContexts = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS);
         ContextManager contextManager = mockContextManager(metaDataContexts);
         when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         executor.setDatabase(database);
-        assertThrows(MissingRequiredStorageUnitsException.class, () -> executor.checkBeforeUpdate(createAlterStorageUnitStatement("not_existed"), mock(ContextManager.class)));
+        assertThrows(MissingRequiredStorageUnitsException.class, () -> executor.executeUpdate(createAlterStorageUnitStatement("not_existed"), mock(ContextManager.class)));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithAlterDatabase() {
+    void assertExecuteUpdateWithAlterDatabase() {
         ContextManager contextManager = mockContextManager(mock(MetaDataContexts.class, RETURNS_DEEP_STUBS));
         when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         ResourceMetaData resourceMetaData = mock(ResourceMetaData.class, RETURNS_DEEP_STUBS);
@@ -103,7 +103,7 @@ class AlterStorageUnitExecutorTest {
         when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         executor.setDatabase(database);
-        assertThrows(InvalidStorageUnitsException.class, () -> executor.checkBeforeUpdate(createAlterStorageUnitStatement("ds_0"), mock(ContextManager.class)));
+        assertThrows(InvalidStorageUnitsException.class, () -> executor.executeUpdate(createAlterStorageUnitStatement("ds_0"), mock(ContextManager.class)));
     }
     
     private ContextManager mockContextManager(final MetaDataContexts metaDataContexts) {
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutorTest.java
index ddfb9c613c0..4a6790ffa73 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitExecutorTest.java
@@ -75,28 +75,28 @@ class RegisterStorageUnitExecutorTest {
     }
     
     @Test
-    void assertCheckBeforeUpdateWithDuplicateStorageUnitNamesInStatement() {
+    void assertExecuteUpdateWithDuplicateStorageUnitNamesInStatement() {
         executor.setDatabase(database);
-        assertThrows(DuplicateStorageUnitException.class, () -> executor.checkBeforeUpdate(createRegisterStorageUnitStatementWithDuplicateStorageUnitNames(), mock(ContextManager.class)));
+        assertThrows(DuplicateStorageUnitException.class, () -> executor.executeUpdate(createRegisterStorageUnitStatementWithDuplicateStorageUnitNames(), mock(ContextManager.class)));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithDuplicateStorageUnitNamesWithResourceMetaData() {
+    void assertExecuteUpdateWithDuplicateStorageUnitNamesWithResourceMetaData() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getStorageUnits("foo_db").keySet()).thenReturn(Collections.singleton("ds_0"));
         executor.setDatabase(database);
-        assertThrows(DuplicateStorageUnitException.class, () -> executor.checkBeforeUpdate(createRegisterStorageUnitStatement(), contextManager));
+        assertThrows(DuplicateStorageUnitException.class, () -> executor.executeUpdate(createRegisterStorageUnitStatement(), contextManager));
     }
     
     @Test
-    void assertCheckBeforeUpdateWithDuplicateStorageUnitNamesWithDataSourceContainedRule() {
+    void assertExecuteUpdateWithDuplicateStorageUnitNamesWithDataSourceContainedRule() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts()).thenReturn(mock(MetaDataContexts.class, RETURNS_DEEP_STUBS));
         DataSourceContainedRule rule = mock(DataSourceContainedRule.class);
         when(rule.getDataSourceMapper()).thenReturn(Collections.singletonMap("ds_0", Collections.emptyList()));
         when(database.getRuleMetaData().findRules(DataSourceContainedRule.class)).thenReturn(Collections.singleton(rule));
         executor.setDatabase(database);
-        assertThrows(InvalidStorageUnitsException.class, () -> executor.checkBeforeUpdate(createRegisterStorageUnitStatement(), contextManager));
+        assertThrows(InvalidStorageUnitsException.class, () -> executor.executeUpdate(createRegisterStorageUnitStatement(), contextManager));
     }
     
     private RegisterStorageUnitStatement createRegisterStorageUnitStatement() {
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java
index 1391beeff60..6cafbe9275f 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java
@@ -116,15 +116,15 @@ class UnregisterStorageUnitExecutorTest {
     }
     
     @Test
-    void assertStorageUnitNameNotExistedExecute() {
+    void assertExecuteUpdateWithhStorageUnitNameNotExisted() {
         when(ProxyContext.getInstance().getDatabase("foo_db").getResourceMetaData().getStorageUnits()).thenReturn(Collections.emptyMap());
         executor.setDatabase(database);
         assertThrows(MissingRequiredStorageUnitsException.class,
-                () -> executor.checkBeforeUpdate(new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false), mock(ContextManager.class)));
+                () -> executor.executeUpdate(new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false), mock(ContextManager.class)));
     }
     
     @Test
-    void assertStorageUnitNameInUseExecute() {
+    void assertExecuteUpdateWithStorageUnitNameInUse() {
         when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.singleton(shadowRule)));
         when(shadowRule.getDataSourceMapper()).thenReturn(Collections.singletonMap("", Collections.singleton("foo_ds")));
         StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
@@ -132,11 +132,11 @@ class UnregisterStorageUnitExecutorTest {
         when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("foo_ds", storageUnit));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         executor.setDatabase(database);
-        assertThrows(StorageUnitInUsedException.class, () -> executor.checkBeforeUpdate(new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false), mock(ContextManager.class)));
+        assertThrows(StorageUnitInUsedException.class, () -> executor.executeUpdate(new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false), mock(ContextManager.class)));
     }
     
     @Test
-    void assertStorageUnitNameInUseWithoutIgnoreSingleTables() {
+    void assertExecuteUpdateWithStorageUnitNameInUseWithoutIgnoreSingleTables() {
         when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.singleton(singleRule)));
         DataNode dataNode = mock(DataNode.class);
         when(dataNode.getDataSourceName()).thenReturn("foo_ds");
@@ -146,7 +146,7 @@ class UnregisterStorageUnitExecutorTest {
         when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("foo_ds", storageUnit));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         executor.setDatabase(database);
-        assertThrows(StorageUnitInUsedException.class, () -> executor.checkBeforeUpdate(new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false), mock(ContextManager.class)));
+        assertThrows(StorageUnitInUsedException.class, () -> executor.executeUpdate(new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false), mock(ContextManager.class)));
     }
     
     @Test
@@ -175,11 +175,11 @@ class UnregisterStorageUnitExecutorTest {
     }
     
     @Test
-    void assertStorageUnitNameInUseWithIfExists() {
+    void assertExecuteUpdateWithStorageUnitNameInUseWithIfExists() {
         when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.singleton(shadowRule)));
         when(shadowRule.getDataSourceMapper()).thenReturn(Collections.singletonMap("", Collections.singleton("foo_ds")));
         UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(true, Collections.singleton("foo_ds"), true, false);
         executor.setDatabase(database);
-        assertThrows(DistSQLException.class, () -> executor.checkBeforeUpdate(unregisterStorageUnitStatement, contextManager));
+        assertThrows(DistSQLException.class, () -> executor.executeUpdate(unregisterStorageUnitStatement, contextManager));
     }
 }