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 24914595701 Refactor ShowProcessListTriggerNodePath and 
KillProcessHandler (#34761)
24914595701 is described below

commit 249145957011f9403229bdd472721895dd2e42e3
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Feb 23 18:02:55 2025 +0800

    Refactor ShowProcessListTriggerNodePath and KillProcessHandler (#34761)
    
    * Refactor ShowProcessListTriggerNodePath and KillProcessHandler
    
    * Refactor ShowProcessListTriggerNodePath and KillProcessHandler
---
 .../process/KillProcessTriggerNodePath.java        | 24 ++++++++++++++++++++++
 .../process/ShowProcessListTriggerNodePath.java    | 24 ++++++++++++++++++++++
 .../root/DatabaseRuleRootNodePathTest.java         |  2 +-
 .../process/KillProcessTriggerNodePathTest.java    | 23 +++++++++++++++++++++
 .../ShowProcessListTriggerNodePathTest.java        | 23 +++++++++++++++++++++
 .../handler/global/type/KillProcessHandler.java    | 14 ++++---------
 .../global/type/ShowProcessListHandler.java        | 23 +++++++--------------
 7 files changed, 106 insertions(+), 27 deletions(-)

diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
index ae5415aea37..55410769f03 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePath.java
@@ -21,6 +21,8 @@ import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.mode.node.path.NodePath;
 import org.apache.shardingsphere.mode.node.path.NodePathEntity;
+import org.apache.shardingsphere.mode.node.path.NodePathPattern;
+import org.apache.shardingsphere.mode.node.path.NodePathSearchCriteria;
 
 /**
  * Kill process trigger node path.
@@ -31,4 +33,26 @@ import 
org.apache.shardingsphere.mode.node.path.NodePathEntity;
 public final class KillProcessTriggerNodePath implements NodePath {
     
     private final InstanceProcessNodeValue instanceProcess;
+    
+    public KillProcessTriggerNodePath() {
+        this(new InstanceProcessNodeValue(NodePathPattern.IDENTIFIER, 
NodePathPattern.IDENTIFIER));
+    }
+    
+    /**
+     * Create instance ID search criteria.
+     *
+     * @return created search criteria
+     */
+    public static NodePathSearchCriteria createInstanceIdSearchCriteria() {
+        return new NodePathSearchCriteria(new KillProcessTriggerNodePath(), 
false, false, 1);
+    }
+    
+    /**
+     * Create process ID search criteria.
+     *
+     * @return created search criteria
+     */
+    public static NodePathSearchCriteria createProcessIdSearchCriteria() {
+        return new NodePathSearchCriteria(new KillProcessTriggerNodePath(), 
false, false, 2);
+    }
 }
diff --git 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
index bc9d9c3b63b..5243b40e4d6 100644
--- 
a/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
+++ 
b/mode/node/src/main/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePath.java
@@ -21,6 +21,8 @@ import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.mode.node.path.NodePath;
 import org.apache.shardingsphere.mode.node.path.NodePathEntity;
+import org.apache.shardingsphere.mode.node.path.NodePathPattern;
+import org.apache.shardingsphere.mode.node.path.NodePathSearchCriteria;
 
 /**
  * Show process list trigger node path.
@@ -31,4 +33,26 @@ import 
org.apache.shardingsphere.mode.node.path.NodePathEntity;
 public final class ShowProcessListTriggerNodePath implements NodePath {
     
     private final InstanceProcessNodeValue instanceProcess;
+    
+    public ShowProcessListTriggerNodePath() {
+        this(new InstanceProcessNodeValue(NodePathPattern.IDENTIFIER, 
NodePathPattern.IDENTIFIER));
+    }
+    
+    /**
+     * Create instance ID search criteria.
+     *
+     * @return created search criteria
+     */
+    public static NodePathSearchCriteria createInstanceIdSearchCriteria() {
+        return new NodePathSearchCriteria(new 
ShowProcessListTriggerNodePath(), false, false, 1);
+    }
+    
+    /**
+     * Create process ID search criteria.
+     *
+     * @return created search criteria
+     */
+    public static NodePathSearchCriteria createProcessIdSearchCriteria() {
+        return new NodePathSearchCriteria(new 
ShowProcessListTriggerNodePath(), false, false, 2);
+    }
 }
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/database/root/DatabaseRuleRootNodePathTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/database/root/DatabaseRuleRootNodePathTest.java
index fdca2c8d113..e3852933904 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/database/root/DatabaseRuleRootNodePathTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/config/database/root/DatabaseRuleRootNodePathTest.java
@@ -30,7 +30,7 @@ class DatabaseRuleRootNodePathTest {
     
     @Test
     void assertGetRuleNodePrefix() {
-        assertThat(nodePath.getNodePrefix(), 
is("/metadata/([\\w\\-]+)/rules/foo/"));
+        assertThat(nodePath.getNodePrefix(), 
is("/metadata/([\\w-]+)/rules/foo/"));
     }
     
     @Test
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
index 967683a9d95..a7f91b32ad3 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/KillProcessTriggerNodePathTest.java
@@ -18,10 +18,15 @@
 package org.apache.shardingsphere.mode.node.path.node.compute.process;
 
 import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
 import org.junit.jupiter.api.Test;
 
+import java.util.Optional;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class KillProcessTriggerNodePathTest {
     
@@ -31,4 +36,22 @@ class KillProcessTriggerNodePathTest {
         assertThat(NodePathGenerator.toPath(new KillProcessTriggerNodePath(new 
InstanceProcessNodeValue("foo_instance_id", "foo_process_id")), false),
                 
is("/nodes/compute_nodes/kill_process_trigger/foo_instance_id:foo_process_id"));
     }
+    
+    @Test
+    void assertCreateInstanceIdSearchCriteria() {
+        
assertThat(NodePathSearcher.find("/nodes/compute_nodes/kill_process_trigger/foo_instance_id:foo_process_id",
+                KillProcessTriggerNodePath.createInstanceIdSearchCriteria()), 
is(Optional.of("foo_instance_id")));
+        
assertFalse(NodePathSearcher.find("/nodes/compute_nodes/kill_process_trigger/foo_instance_id",
 KillProcessTriggerNodePath.createInstanceIdSearchCriteria()).isPresent());
+        
assertTrue(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/kill_process_trigger/foo_instance_id:foo_process_id",
 KillProcessTriggerNodePath.createInstanceIdSearchCriteria()));
+        
assertFalse(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/kill_process_trigger/foo_instance_id",
 KillProcessTriggerNodePath.createInstanceIdSearchCriteria()));
+    }
+    
+    @Test
+    void assertCreateProcessIdSearchCriteria() {
+        
assertThat(NodePathSearcher.find("/nodes/compute_nodes/kill_process_trigger/foo_instance_id:foo_process_id",
+                KillProcessTriggerNodePath.createProcessIdSearchCriteria()), 
is(Optional.of("foo_process_id")));
+        
assertFalse(NodePathSearcher.find("/nodes/compute_nodes/kill_process_trigger/foo_instance_id",
 KillProcessTriggerNodePath.createProcessIdSearchCriteria()).isPresent());
+        
assertTrue(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/kill_process_trigger/foo_instance_id:foo_process_id",
 KillProcessTriggerNodePath.createProcessIdSearchCriteria()));
+        
assertFalse(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/kill_process_trigger/foo_instance_id",
 KillProcessTriggerNodePath.createProcessIdSearchCriteria()));
+    }
 }
diff --git 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
index 4b8adafc26c..b3a04ed990c 100644
--- 
a/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
+++ 
b/mode/node/src/test/java/org/apache/shardingsphere/mode/node/path/node/compute/process/ShowProcessListTriggerNodePathTest.java
@@ -18,10 +18,15 @@
 package org.apache.shardingsphere.mode.node.path.node.compute.process;
 
 import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
 import org.junit.jupiter.api.Test;
 
+import java.util.Optional;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class ShowProcessListTriggerNodePathTest {
     
@@ -31,4 +36,22 @@ class ShowProcessListTriggerNodePathTest {
         assertThat(NodePathGenerator.toPath(new 
ShowProcessListTriggerNodePath(new InstanceProcessNodeValue("foo_instance_id", 
"foo_process_id")), false),
                 
is("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id:foo_process_id"));
     }
+    
+    @Test
+    void assertCreateInstanceIdSearchCriteria() {
+        
assertThat(NodePathSearcher.find("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id:foo_process_id",
+                
ShowProcessListTriggerNodePath.createInstanceIdSearchCriteria()), 
is(Optional.of("foo_instance_id")));
+        
assertFalse(NodePathSearcher.find("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id",
 ShowProcessListTriggerNodePath.createInstanceIdSearchCriteria()).isPresent());
+        
assertTrue(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id:foo_process_id",
 ShowProcessListTriggerNodePath.createInstanceIdSearchCriteria()));
+        
assertFalse(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id",
 ShowProcessListTriggerNodePath.createInstanceIdSearchCriteria()));
+    }
+    
+    @Test
+    void assertCreateProcessIdSearchCriteria() {
+        
assertThat(NodePathSearcher.find("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id:foo_process_id",
+                
ShowProcessListTriggerNodePath.createProcessIdSearchCriteria()), 
is(Optional.of("foo_process_id")));
+        
assertFalse(NodePathSearcher.find("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id",
 ShowProcessListTriggerNodePath.createProcessIdSearchCriteria()).isPresent());
+        
assertTrue(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id:foo_process_id",
 ShowProcessListTriggerNodePath.createProcessIdSearchCriteria()));
+        
assertFalse(NodePathSearcher.isMatchedPath("/nodes/compute_nodes/show_process_list_trigger/foo_instance_id",
 ShowProcessListTriggerNodePath.createProcessIdSearchCriteria()));
+    }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
index 4fa74ddc993..a182f7f2e42 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/KillProcessHandler.java
@@ -26,13 +26,12 @@ import 
org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler;
 import 
org.apache.shardingsphere.mode.manager.cluster.persist.coordinator.process.ClusterProcessPersistCoordinator;
 import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
 import 
org.apache.shardingsphere.mode.node.path.node.compute.process.KillProcessTriggerNodePath;
 
 import java.sql.SQLException;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * Kill process handler.
@@ -51,12 +50,11 @@ public final class KillProcessHandler implements 
GlobalDataChangedEventHandler {
     
     @Override
     public void handle(final ContextManager contextManager, final 
DataChangedEvent event) {
-        Matcher matcher = getKillProcessTriggerMatcher(event);
-        if (!matcher.find()) {
+        if (!NodePathSearcher.isMatchedPath(event.getKey(), 
KillProcessTriggerNodePath.createProcessIdSearchCriteria())) {
             return;
         }
-        String instanceId = matcher.group(1);
-        String processId = matcher.group(2);
+        String instanceId = NodePathSearcher.find(event.getKey(), 
KillProcessTriggerNodePath.createInstanceIdSearchCriteria()).orElse("");
+        String processId = NodePathSearcher.find(event.getKey(), 
KillProcessTriggerNodePath.createProcessIdSearchCriteria()).orElse("");
         if (Type.ADDED == event.getType()) {
             if 
(!instanceId.equals(contextManager.getComputeNodeInstanceContext().getInstance().getMetaData().getId()))
 {
                 return;
@@ -71,8 +69,4 @@ public final class KillProcessHandler implements 
GlobalDataChangedEventHandler {
             ProcessOperationLockRegistry.getInstance().notify(processId);
         }
     }
-    
-    private Matcher getKillProcessTriggerMatcher(final DataChangedEvent event) 
{
-        return Pattern.compile(NodePathGenerator.toPath(new 
KillProcessTriggerNodePath(null), false) + "/([\\S]+):([\\S]+)$", 
Pattern.CASE_INSENSITIVE).matcher(event.getKey());
-    }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
index af8b4863f85..f3981b9330d 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/ShowProcessListHandler.java
@@ -24,12 +24,11 @@ import 
org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler;
 import 
org.apache.shardingsphere.mode.manager.cluster.persist.coordinator.process.ClusterProcessPersistCoordinator;
 import org.apache.shardingsphere.mode.node.path.NodePathGenerator;
+import org.apache.shardingsphere.mode.node.path.NodePathSearcher;
 import 
org.apache.shardingsphere.mode.node.path.node.compute.process.ShowProcessListTriggerNodePath;
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * Show process list handler.
@@ -48,25 +47,17 @@ public final class ShowProcessListHandler implements 
GlobalDataChangedEventHandl
     
     @Override
     public void handle(final ContextManager contextManager, final 
DataChangedEvent event) {
-        Matcher matcher = getShowProcessListTriggerMatcher(event);
-        if (matcher.find()) {
-            handle(contextManager, event, matcher);
+        if (!NodePathSearcher.isMatchedPath(event.getKey(), 
ShowProcessListTriggerNodePath.createProcessIdSearchCriteria())) {
+            return;
         }
-    }
-    
-    private void handle(final ContextManager contextManager, final 
DataChangedEvent event, final Matcher matcher) {
-        String instanceId = matcher.group(1);
-        String taskId = matcher.group(2);
+        String instanceId = NodePathSearcher.find(event.getKey(), 
ShowProcessListTriggerNodePath.createInstanceIdSearchCriteria()).orElse("");
+        String processId = NodePathSearcher.find(event.getKey(), 
ShowProcessListTriggerNodePath.createProcessIdSearchCriteria()).orElse("");
         if (Type.ADDED == event.getType()) {
             if 
(instanceId.equals(contextManager.getComputeNodeInstanceContext().getInstance().getMetaData().getId()))
 {
-                new 
ClusterProcessPersistCoordinator(contextManager.getPersistServiceFacade().getRepository()).reportLocalProcesses(instanceId,
 taskId);
+                new 
ClusterProcessPersistCoordinator(contextManager.getPersistServiceFacade().getRepository()).reportLocalProcesses(instanceId,
 processId);
             }
         } else if (Type.DELETED == event.getType()) {
-            ProcessOperationLockRegistry.getInstance().notify(taskId);
+            ProcessOperationLockRegistry.getInstance().notify(processId);
         }
     }
-    
-    private Matcher getShowProcessListTriggerMatcher(final DataChangedEvent 
event) {
-        return Pattern.compile(NodePathGenerator.toPath(new 
ShowProcessListTriggerNodePath(null), false) + "/([\\S]+):([\\S]+)$", 
Pattern.CASE_INSENSITIVE).matcher(event.getKey());
-    }
 }

Reply via email to