This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 739e7613490 Refactor `UnlabelComputeNodeHandler` (#24211)
739e7613490 is described below
commit 739e761349087b7401e5448a971516613d0c0f03
Author: Zichao <[email protected]>
AuthorDate: Fri Feb 17 15:45:09 2023 +0800
Refactor `UnlabelComputeNodeHandler` (#24211)
* Refactor `UnlabelComputeNodeHandler`
* Refactor `UnlabelComputeNodeHandler`
---
.../distsql/ral/RALBackendHandlerFactory.java | 3 --
...Handler.java => UnlabelComputeNodeUpdater.java} | 24 ++++++++-----
...ingsphere.distsql.handler.ral.update.RALUpdater | 1 +
.../updatable/UnlabelComputeNodeUpdaterTest.java | 41 ++++++++++++++++++++++
4 files changed, 57 insertions(+), 12 deletions(-)
diff --git
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
index 9f70e411d0d..932ce8d1c9d 100644
---
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
+++
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
@@ -32,7 +32,6 @@ import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.RefreshD
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.RefreshTableMetaDataStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.SetDistVariableStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.SetInstanceStatusStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.UnlabelComputeNodeStatement;
import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.UnsupportedSQLOperationException;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
@@ -45,7 +44,6 @@ import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.Ref
import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.RefreshTableMetaDataHandler;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.SetDistVariableHandler;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.SetInstanceStatusHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.UnlabelComputeNodeHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.status.AlterReadwriteSplittingStorageUnitStatusStatement;
@@ -61,7 +59,6 @@ public final class RALBackendHandlerFactory {
private static final Map<Class<? extends RALStatement>, Class<? extends
RALBackendHandler<?>>> HANDLERS = new HashMap<>();
static {
- HANDLERS.put(UnlabelComputeNodeStatement.class,
UnlabelComputeNodeHandler.class);
HANDLERS.put(SetInstanceStatusStatement.class,
SetInstanceStatusHandler.class);
HANDLERS.put(SetDistVariableStatement.class,
SetDistVariableHandler.class);
HANDLERS.put(AlterReadwriteSplittingStorageUnitStatusStatement.class,
AlterReadwriteSplittingStorageUnitStatusStatementHandler.class);
diff --git
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeHandler.java
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdater.java
similarity index 75%
rename from
proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeHandler.java
rename to
proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdater.java
index 085d2dab2f4..8d4d278f61a 100644
---
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeHandler.java
+++
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdater.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
+import org.apache.shardingsphere.distsql.handler.ral.update.RALUpdater;
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.UnlabelComputeNodeStatement;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
@@ -24,9 +25,8 @@ import
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.
import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.LabelsChangedEvent;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
-import
org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepository;
+import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableRALBackendHandler;
import java.util.ArrayList;
import java.util.Collection;
@@ -35,25 +35,31 @@ import java.util.LinkedHashSet;
import java.util.Optional;
/**
- * Unlabel compute node handler.
+ * Unlabel compute node updater.
*/
-public final class UnlabelComputeNodeHandler extends
UpdatableRALBackendHandler<UnlabelComputeNodeStatement> {
+public final class UnlabelComputeNodeUpdater implements
RALUpdater<UnlabelComputeNodeStatement> {
@Override
- protected void update(final ContextManager contextManager) {
+ public void executeUpdate(final String databaseName, final
UnlabelComputeNodeStatement sqlStatement) {
MetaDataPersistService persistService =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getPersistService();
- ShardingSpherePreconditions.checkState(null !=
persistService.getRepository() && !(persistService.getRepository() instanceof
StandalonePersistRepository),
+ ShardingSpherePreconditions.checkState(null !=
persistService.getRepository() && persistService.getRepository() instanceof
ClusterPersistRepository,
() -> new UnsupportedSQLOperationException("Labels can only be
removed in cluster mode"));
- String instanceId = getSqlStatement().getInstanceId();
+ String instanceId = sqlStatement.getInstanceId();
+ ContextManager contextManager =
ProxyContext.getInstance().getContextManager();
Optional<ComputeNodeInstance> computeNodeInstance =
contextManager.getInstanceContext().getComputeNodeInstanceById(instanceId);
if (computeNodeInstance.isPresent()) {
Collection<String> labels = new
LinkedHashSet<>(computeNodeInstance.get().getLabels());
- if (getSqlStatement().getLabels().isEmpty()) {
+ if (sqlStatement.getLabels().isEmpty()) {
contextManager.getInstanceContext().getEventBusContext().post(new
LabelsChangedEvent(instanceId, Collections.emptyList()));
} else {
- labels.removeAll(getSqlStatement().getLabels());
+ labels.removeAll(sqlStatement.getLabels());
contextManager.getInstanceContext().getEventBusContext().post(new
LabelsChangedEvent(instanceId, new ArrayList<>(labels)));
}
}
}
+
+ @Override
+ public String getType() {
+ return UnlabelComputeNodeStatement.class.getName();
+ }
}
diff --git
a/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.ral.update.RALUpdater
b/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.ral.update.RALUpdater
index 485048adb06..ac7d881c3e5 100644
---
a/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.ral.update.RALUpdater
+++
b/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.ral.update.RALUpdater
@@ -17,3 +17,4 @@
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.AlterInventoryIncrementalRuleUpdater
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.LabelComputeNodeUpdater
+org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.UnlabelComputeNodeUpdater
diff --git
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdaterTest.java
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdaterTest.java
new file mode 100644
index 00000000000..897bf358c74
--- /dev/null
+++
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdaterTest.java
@@ -0,0 +1,41 @@
+/*
+ * 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.distsql.parser.statement.ral.updatable.UnlabelComputeNodeStatement;
+import
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.UnsupportedSQLOperationException;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
+import org.junit.Test;
+
+import java.sql.SQLException;
+
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+
+public final class UnlabelComputeNodeUpdaterTest extends ProxyContextRestorer {
+
+ @Test(expected = UnsupportedSQLOperationException.class)
+ public void assertWithStandaloneMode() throws SQLException {
+ ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
+ ProxyContext.init(contextManager);
+ UnlabelComputeNodeUpdater updater = new UnlabelComputeNodeUpdater();
+ updater.executeUpdate("foo", mock(UnlabelComputeNodeStatement.class));
+ }
+}