You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/03/07 21:42:28 UTC
(shardingsphere) branch master updated: Add ClusterState.valueFrom() (#34928)
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 <zh...@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()));
}
}