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 f574e3de470 Refactor StatesNodePath (#34274)
f574e3de470 is described below

commit f574e3de470088de3b95b7803ef29629f15a6c6a
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jan 7 12:30:17 2025 +0800

    Refactor StatesNodePath (#34274)
    
    * Refactor ComputeNodePersistService
    
    * Refactor DatabaseMetaDataNodePath
    
    * Refactor GlobalNodePath
    
    * Refactor StatesNodePath
---
 .../persist/node/DatabaseMetaDataNodePath.java     | 14 +++++-----
 .../metadata/persist/node/GlobalNodePath.java      | 24 ++++++++--------
 .../metadata/persist/node/StatesNodePath.java      | 32 ++++++++++++----------
 .../config/global/GlobalRulePersistService.java    |  7 +++--
 .../schema/SchemaMetaDataPersistService.java       |  4 +--
 .../persist/node/DatabaseMetaDataNodePathTest.java |  8 +++---
 .../metadata/persist/node/StatesNodePathTest.java  | 19 +++++++------
 .../service/unified/ComputeNodePersistService.java | 13 ++-------
 .../unified/ListenerAssistedPersistService.java    |  4 +--
 .../global/ListenerAssistedChangedHandler.java     |  4 +--
 10 files changed, 64 insertions(+), 65 deletions(-)

diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java
index 45bb1dc955f..f609624221e 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePath.java
@@ -62,12 +62,12 @@ public final class DatabaseMetaDataNodePath {
     }
     
     /**
-     * Get schemas path.
+     * Get schema root path.
      *
      * @param databaseName database name
-     * @return schemas path
+     * @return schema root path
      */
-    public static String getSchemasPath(final String databaseName) {
+    public static String getSchemaRootPath(final String databaseName) {
         return String.join("/", getDatabasePath(databaseName), SCHEMAS_NODE);
     }
     
@@ -79,17 +79,17 @@ public final class DatabaseMetaDataNodePath {
      * @return schema path
      */
     public static String getSchemaPath(final String databaseName, final String 
schemaName) {
-        return String.join("/", getSchemasPath(databaseName), schemaName);
+        return String.join("/", getSchemaRootPath(databaseName), schemaName);
     }
     
     /**
-     * Get tables path.
+     * Get table root path.
      *
      * @param databaseName database name
      * @param schemaName schema name
-     * @return tables path
+     * @return table root path
      */
-    public static String getTablesPath(final String databaseName, final String 
schemaName) {
+    public static String getTableRootPath(final String databaseName, final 
String schemaName) {
         return String.join("/", getSchemaPath(databaseName, schemaName), 
TABLES_NODE);
     }
     
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/GlobalNodePath.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/GlobalNodePath.java
index c4ddc1a56f5..ff89f0b7f9f 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/GlobalNodePath.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/GlobalNodePath.java
@@ -46,42 +46,42 @@ public final class GlobalNodePath {
     /**
      * Get global rule path.
      *
-     * @param ruleName rule name
+     * @param ruleTypeName rule type name
      * @return global rule path
      */
-    public static String getRulePath(final String ruleName) {
-        return String.join("/", getRuleRootPath(), ruleName);
+    public static String getRulePath(final String ruleTypeName) {
+        return String.join("/", getRuleRootPath(), ruleTypeName);
     }
     
     /**
      * Get global rule versions path.
      *
-     * @param ruleName rule name
+     * @param ruleTypeName rule type name
      * @return global rule versions path
      */
-    public static String getRuleVersionsPath(final String ruleName) {
-        return String.join("/", getRulePath(ruleName), VERSIONS_NODE);
+    public static String getRuleVersionsPath(final String ruleTypeName) {
+        return String.join("/", getRulePath(ruleTypeName), VERSIONS_NODE);
     }
     
     /**
      * Get global rule version path.
      *
-     * @param ruleName rule name
+     * @param ruleTypeName rule type name
      * @param version version
      * @return global rule version path
      */
-    public static String getRuleVersionPath(final String ruleName, final 
String version) {
-        return String.join("/", getRuleVersionsPath(ruleName), version);
+    public static String getRuleVersionPath(final String ruleTypeName, final 
String version) {
+        return String.join("/", getRuleVersionsPath(ruleTypeName), version);
     }
     
     /**
      * Get global rule active version path.
      *
-     * @param ruleName rule name
+     * @param ruleTypeName rule type name
      * @return global rule active version path
      */
-    public static String getRuleActiveVersionPath(final String ruleName) {
-        return String.join("/", getRulePath(ruleName), ACTIVE_VERSION_NODE);
+    public static String getRuleActiveVersionPath(final String ruleTypeName) {
+        return String.join("/", getRulePath(ruleTypeName), 
ACTIVE_VERSION_NODE);
     }
     
     /**
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePath.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePath.java
index 9b4139ed109..a33db176594 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePath.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePath.java
@@ -36,6 +36,8 @@ public final class StatesNodePath {
     
     private static final String LISTENER_ASSISTED_NODE = "listener_assisted";
     
+    private static final String DATABASE_PATTERN = "(\\w+)";
+    
     /**
      * Get cluster state path.
      *
@@ -46,33 +48,33 @@ public final class StatesNodePath {
     }
     
     /**
-     * Get listener assisted node path.
+     * Get listener assisted node root path.
      *
-     * @return listener assisted node path
+     * @return listener assisted node root path
      */
-    public static String getListenerAssistedNodePath() {
+    public static String getListenerAssistedNodeRootPath() {
         return String.join("/", ROOT_NODE, LISTENER_ASSISTED_NODE);
     }
     
     /**
-     * Get database name by listener assisted node path.
+     * Get database name listener assisted node path.
      *
-     * @param nodePath path
-     * @return database name
+     * @param databaseName database name
+     * @return database name listener assisted node path
      */
-    public static Optional<String> 
findDatabaseNameByListenerAssistedNodePath(final String nodePath) {
-        Pattern pattern = Pattern.compile(getListenerAssistedNodePath() + 
"/(\\w+)$", Pattern.CASE_INSENSITIVE);
-        Matcher matcher = pattern.matcher(nodePath);
-        return matcher.find() ? Optional.of(matcher.group(1)) : 
Optional.empty();
+    public static String getListenerAssistedNodePath(final String 
databaseName) {
+        return String.join("/", getListenerAssistedNodeRootPath(), 
databaseName);
     }
     
     /**
-     * Get database name listener assisted node path.
+     * Find database name by listener assisted node path.
      *
-     * @param databaseName database name
-     * @return database name listener assisted node path
+     * @param listenerAssistedNodePath listener assisted node path
+     * @return found database name
      */
-    public static String getDatabaseNameListenerAssistedNodePath(final String 
databaseName) {
-        return String.join("/", ROOT_NODE, LISTENER_ASSISTED_NODE, 
databaseName);
+    public static Optional<String> findDatabaseName(final String 
listenerAssistedNodePath) {
+        Pattern pattern = 
Pattern.compile(getListenerAssistedNodePath(DATABASE_PATTERN) + "$", 
Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(listenerAssistedNodePath);
+        return matcher.find() ? Optional.of(matcher.group(1)) : 
Optional.empty();
     }
 }
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
index 63ce71ba045..3982d8f078b 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
@@ -90,10 +90,11 @@ public final class GlobalRulePersistService {
             List<String> versions = 
metaDataVersionPersistService.getVersions(GlobalNodePath.getRuleVersionsPath(each.getKey()));
             String nextActiveVersion = versions.isEmpty() ? 
MetaDataVersion.DEFAULT_VERSION : 
String.valueOf(Integer.parseInt(versions.get(0)) + 1);
             
repository.persist(GlobalNodePath.getRuleVersionPath(each.getKey(), 
nextActiveVersion), each.getValue());
-            if 
(Strings.isNullOrEmpty(repository.query(GlobalNodePath.getRuleActiveVersionPath(each.getKey()))))
 {
-                
repository.persist(GlobalNodePath.getRuleActiveVersionPath(each.getKey()), 
MetaDataVersion.DEFAULT_VERSION);
+            String ruleActiveVersionPath = 
GlobalNodePath.getRuleActiveVersionPath(each.getKey());
+            if 
(Strings.isNullOrEmpty(repository.query(ruleActiveVersionPath))) {
+                repository.persist(ruleActiveVersionPath, 
MetaDataVersion.DEFAULT_VERSION);
             }
-            result.add(new 
MetaDataVersion(GlobalNodePath.getRulePath(each.getKey()), 
repository.query(GlobalNodePath.getRuleActiveVersionPath(each.getKey())), 
nextActiveVersion));
+            result.add(new 
MetaDataVersion(GlobalNodePath.getRulePath(each.getKey()), 
repository.query(ruleActiveVersionPath), nextActiveVersion));
         }
         return result;
     }
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java
index dce6e869610..a9c65aecf90 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistService.java
@@ -53,7 +53,7 @@ public final class SchemaMetaDataPersistService {
      * @param schemaName to be added schema name
      */
     public void add(final String databaseName, final String schemaName) {
-        
repository.persist(DatabaseMetaDataNodePath.getTablesPath(databaseName, 
schemaName), "");
+        
repository.persist(DatabaseMetaDataNodePath.getTableRootPath(databaseName, 
schemaName), "");
     }
     
     /**
@@ -113,7 +113,7 @@ public final class SchemaMetaDataPersistService {
      * @return schemas
      */
     public Collection<ShardingSphereSchema> load(final String databaseName) {
-        return 
repository.getChildrenKeys(DatabaseMetaDataNodePath.getSchemasPath(databaseName)).stream()
+        return 
repository.getChildrenKeys(DatabaseMetaDataNodePath.getSchemaRootPath(databaseName)).stream()
                 .map(each -> new ShardingSphereSchema(each, 
tableMetaDataPersistService.load(databaseName, each), 
viewMetaDataPersistService.load(databaseName, 
each))).collect(Collectors.toList());
     }
 }
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java
index fedbb260054..4cc15510b6b 100644
--- 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java
+++ 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/DatabaseMetaDataNodePathTest.java
@@ -39,8 +39,8 @@ class DatabaseMetaDataNodePathTest {
     }
     
     @Test
-    void assertGetSchemasPath() {
-        assertThat(DatabaseMetaDataNodePath.getSchemasPath("foo_db"), 
is("/metadata/foo_db/schemas"));
+    void assertGetSchemaRootPath() {
+        assertThat(DatabaseMetaDataNodePath.getSchemaRootPath("foo_db"), 
is("/metadata/foo_db/schemas"));
     }
     
     @Test
@@ -49,8 +49,8 @@ class DatabaseMetaDataNodePathTest {
     }
     
     @Test
-    void assertGetTablesPath() {
-        assertThat(DatabaseMetaDataNodePath.getTablesPath("foo_db", 
"foo_schema"), is("/metadata/foo_db/schemas/foo_schema/tables"));
+    void assertGetTableRootPath() {
+        assertThat(DatabaseMetaDataNodePath.getTableRootPath("foo_db", 
"foo_schema"), is("/metadata/foo_db/schemas/foo_schema/tables"));
     }
     
     @Test
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePathTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePathTest.java
index 1cd3d7b716f..2f174fca6f1 100644
--- 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePathTest.java
+++ 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/StatesNodePathTest.java
@@ -19,9 +19,11 @@ package org.apache.shardingsphere.metadata.persist.node;
 
 import org.junit.jupiter.api.Test;
 
-import static org.hamcrest.MatcherAssert.assertThat;
+import java.util.Optional;
+
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 class StatesNodePathTest {
     
@@ -31,17 +33,18 @@ class StatesNodePathTest {
     }
     
     @Test
-    void assertGetListenerAssistedNodePath() {
-        assertThat(StatesNodePath.getListenerAssistedNodePath(), 
is("/states/listener_assisted"));
+    void assertGetListenerAssistedNodeRootPath() {
+        assertThat(StatesNodePath.getListenerAssistedNodeRootPath(), 
is("/states/listener_assisted"));
     }
     
     @Test
-    void assertFindDatabaseNameByListenerAssistedNodePath() {
-        
assertTrue(StatesNodePath.findDatabaseNameByListenerAssistedNodePath("/states/listener_assisted/foo_db").isPresent());
+    void assertGetListenerAssistedNodePath() {
+        assertThat(StatesNodePath.getListenerAssistedNodePath("foo_db"), 
is("/states/listener_assisted/foo_db"));
     }
     
     @Test
-    void assertGetDatabaseNameListenerAssistedNodePath() {
-        
assertThat(StatesNodePath.getDatabaseNameListenerAssistedNodePath("foo_db"), 
is("/states/listener_assisted/foo_db"));
+    void assertFindDatabaseName() {
+        
assertThat(StatesNodePath.findDatabaseName("/states/listener_assisted/foo_db"), 
is(Optional.of("foo_db")));
+        
assertFalse(StatesNodePath.findDatabaseName("/states/listener_assisted").isPresent());
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
index 38af55fcd4e..5c2b20548e3 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java
@@ -34,8 +34,8 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.LinkedHashSet;
 import java.util.LinkedList;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -162,15 +162,8 @@ public final class ComputeNodePersistService {
      * @return assigned worker IDs
      */
     public Collection<Integer> getAssignedWorkerIds() {
-        Collection<String> childrenKeys = 
repository.getChildrenKeys(ComputeNodePath.getWorkerIdRootPath());
-        Collection<Integer> result = new LinkedHashSet<>(childrenKeys.size(), 
1F);
-        for (String each : childrenKeys) {
-            String workerId = 
repository.query(ComputeNodePath.getWorkerIdPath(each));
-            if (null != workerId) {
-                result.add(Integer.parseInt(workerId));
-            }
-        }
-        return result;
+        Collection<String> instanceIds = 
repository.getChildrenKeys(ComputeNodePath.getWorkerIdRootPath());
+        return instanceIds.stream().map(each -> 
repository.query(ComputeNodePath.getWorkerIdPath(each))).filter(Objects::nonNull).map(Integer::parseInt).collect(Collectors.toSet());
     }
     
     /**
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ListenerAssistedPersistService.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ListenerAssistedPersistService.java
index 514e9fe4355..b425d4ee758 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ListenerAssistedPersistService.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ListenerAssistedPersistService.java
@@ -36,7 +36,7 @@ public final class ListenerAssistedPersistService {
      * @param listenerAssistedType listener assisted type
      */
     public void persistDatabaseNameListenerAssisted(final String databaseName, 
final ListenerAssistedType listenerAssistedType) {
-        
repository.persistEphemeral(StatesNodePath.getDatabaseNameListenerAssistedNodePath(databaseName),
 listenerAssistedType.name());
+        
repository.persistEphemeral(StatesNodePath.getListenerAssistedNodePath(databaseName),
 listenerAssistedType.name());
     }
     
     /**
@@ -45,6 +45,6 @@ public final class ListenerAssistedPersistService {
      * @param databaseName database name
      */
     public void deleteDatabaseNameListenerAssisted(final String databaseName) {
-        
repository.delete(StatesNodePath.getDatabaseNameListenerAssistedNodePath(databaseName));
+        
repository.delete(StatesNodePath.getListenerAssistedNodePath(databaseName));
     }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java
index 85accfd61bd..fabac4bc9c3 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ListenerAssistedChangedHandler.java
@@ -39,7 +39,7 @@ public final class ListenerAssistedChangedHandler implements 
DataChangedEventHan
     
     @Override
     public String getSubscribedKey() {
-        return StatesNodePath.getListenerAssistedNodePath();
+        return StatesNodePath.getListenerAssistedNodeRootPath();
     }
     
     @Override
@@ -49,7 +49,7 @@ public final class ListenerAssistedChangedHandler implements 
DataChangedEventHan
     
     @Override
     public void handle(final ContextManager contextManager, final 
DataChangedEvent event) {
-        
StatesNodePath.findDatabaseNameByListenerAssistedNodePath(event.getKey()).ifPresent(optional
 -> handle(contextManager, optional, 
ListenerAssistedType.valueOf(event.getValue())));
+        StatesNodePath.findDatabaseName(event.getKey()).ifPresent(optional -> 
handle(contextManager, optional, 
ListenerAssistedType.valueOf(event.getValue())));
     }
     
     private static void handle(final ContextManager contextManager, final 
String databaseName, final ListenerAssistedType listenerAssistedType) {

Reply via email to