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));
}
}