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

Reply via email to