This is an automated email from the ASF dual-hosted git repository. zhangliang 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 d538d604e2c Add ClusterState.valueFrom() (#34928) d538d604e2c is described below commit d538d604e2cd49312c12fca2d193e90d03060f23 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Sat Mar 8 05:42:21 2025 +0800 Add ClusterState.valueFrom() (#34928) * Add ClusterState.valueFrom() * Add ClusterState.valueFrom() --- .../mode/state/cluster/ClusterState.java | 14 +++++++++++++- .../state/cluster/ClusterStatePersistService.java | 4 +--- .../mode/state/cluster/ClusterStateTest.java} | 20 +++++++++++++++----- .../global/state/ClusterStateChangedHandler.java | 10 +--------- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterState.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterState.java index 22ce32d6646..669d1d5bc9b 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterState.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterState.java @@ -17,10 +17,22 @@ package org.apache.shardingsphere.mode.state.cluster; +import com.google.common.base.Strings; + /** * Cluster state. */ public enum ClusterState { - OK, READ_ONLY, UNAVAILABLE + OK, READ_ONLY, UNAVAILABLE; + + /** + * Value from. + * + * @param value value + * @return cluster state + */ + public static ClusterState valueFrom(final String value) { + return Strings.isNullOrEmpty(value) ? ClusterState.OK : ClusterState.valueOf(value); + } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java index fb7231d31f3..1ecd6b9c09f 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterStatePersistService.java @@ -17,7 +17,6 @@ package org.apache.shardingsphere.mode.state.cluster; -import com.google.common.base.Strings; import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.mode.node.path.engine.generator.NodePathGenerator; import org.apache.shardingsphere.mode.node.path.type.global.state.ClusterNodePath; @@ -46,7 +45,6 @@ public final class ClusterStatePersistService { * @return loaded cluster state */ public ClusterState load() { - String value = repository.query(NodePathGenerator.toPath(new ClusterNodePath(), false)); - return Strings.isNullOrEmpty(value) ? ClusterState.OK : ClusterState.valueOf(value); + return ClusterState.valueFrom(repository.query(NodePathGenerator.toPath(new ClusterNodePath(), false))); } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterState.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/state/cluster/ClusterStateTest.java similarity index 67% copy from mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterState.java copy to mode/core/src/test/java/org/apache/shardingsphere/mode/state/cluster/ClusterStateTest.java index 22ce32d6646..b99a7522e1f 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/state/cluster/ClusterState.java +++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/state/cluster/ClusterStateTest.java @@ -17,10 +17,20 @@ package org.apache.shardingsphere.mode.state.cluster; -/** - * Cluster state. - */ -public enum ClusterState { +import org.junit.jupiter.api.Test; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +class ClusterStateTest { + + @Test + void assertValueFromEmptyValue() { + assertThat(ClusterState.valueFrom(""), is(ClusterState.OK)); + } - OK, READ_ONLY, UNAVAILABLE + @Test + void assertValueFrom() { + assertThat(ClusterState.valueFrom("UNAVAILABLE"), is(ClusterState.UNAVAILABLE)); + } } diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/ClusterStateChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/ClusterStateChangedHandler.java index 2c45f18ef66..d0cbfa1c814 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/ClusterStateChangedHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/ClusterStateChangedHandler.java @@ -45,14 +45,6 @@ public final class ClusterStateChangedHandler implements GlobalDataChangedEventH @Override public void handle(final ContextManager contextManager, final DataChangedEvent event) { - contextManager.getStateContext().switchState(getClusterState(event)); - } - - private ClusterState getClusterState(final DataChangedEvent event) { - try { - return ClusterState.valueOf(event.getValue()); - } catch (final IllegalArgumentException ignore) { - return ClusterState.OK; - } + contextManager.getStateContext().switchState(ClusterState.valueFrom(event.getValue())); } }