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 <[email protected]>
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));
     }
 }

Reply via email to