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