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 f9b736b1662 Add GlobalConfigurationChangedHandler (#34924)
f9b736b1662 is described below

commit f9b736b166283db615f3ad4927488d07fdd29530
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Fri Mar 7 19:07:38 2025 +0800

    Add GlobalConfigurationChangedHandler (#34924)
---
 .../config/GlobalConfigurationChangedHandler.java} | 24 +++-------------------
 .../{ => type}/GlobalRuleChangedHandler.java       | 10 +++------
 .../{ => type}/PropertiesChangedHandler.java       | 10 +++------
 .../type/GlobalMetaDataChangedListener.java        |  5 +++++
 ...ch.handler.global.GlobalDataChangedEventHandler |  4 ++--
 .../{ => type}/GlobalRuleChangedHandlerTest.java   |  3 +--
 .../{ => type}/PropertiesChangedHandlerTest.java   |  3 +--
 7 files changed, 18 insertions(+), 41 deletions(-)

diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/GlobalMetaDataChangedListener.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalConfigurationChangedHandler.java
similarity index 52%
copy from 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/GlobalMetaDataChangedListener.java
copy to 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalConfigurationChangedHandler.java
index a5b47ad0b96..2fbf489ccfd 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/GlobalMetaDataChangedListener.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalConfigurationChangedHandler.java
@@ -15,30 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.mode.manager.cluster.dispatch.listener.type;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config;
 
-import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache;
-import org.apache.shardingsphere.mode.event.DataChangedEvent;
-import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler;
-import 
org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener;
 
 /**
- * Global meta data changed listener.
+ * Global configuration changed handler.
  */
-@RequiredArgsConstructor
-public final class GlobalMetaDataChangedListener implements 
DataChangedEventListener {
-    
-    private final ContextManager contextManager;
-    
-    private final GlobalDataChangedEventHandler handler;
-    
-    @Override
-    public void onChange(final DataChangedEvent event) {
-        if (handler.getSubscribedTypes().contains(event.getType())) {
-            OrderedServicesCache.clearCache();
-            handler.handle(contextManager, event);
-        }
-    }
+public interface GlobalConfigurationChangedHandler extends 
GlobalDataChangedEventHandler {
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalRuleChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/GlobalRuleChangedHandler.java
similarity index 87%
rename from 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalRuleChangedHandler.java
rename to 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/GlobalRuleChangedHandler.java
index 575d3f6e683..0625b98bb5b 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalRuleChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/GlobalRuleChangedHandler.java
@@ -15,14 +15,13 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.type;
 
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler;
-import org.apache.shardingsphere.mode.metadata.manager.ActiveVersionChecker;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.GlobalConfigurationChangedHandler;
 import org.apache.shardingsphere.mode.node.path.NodePath;
 import 
org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathPattern;
 import 
org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher;
@@ -35,7 +34,7 @@ import java.util.Collection;
 /**
  * Global rule changed handler.
  */
-public final class GlobalRuleChangedHandler implements 
GlobalDataChangedEventHandler {
+public final class GlobalRuleChangedHandler implements 
GlobalConfigurationChangedHandler {
     
     @Override
     public NodePath getSubscribedNodePath() {
@@ -52,9 +51,6 @@ public final class GlobalRuleChangedHandler implements 
GlobalDataChangedEventHan
         if (!new VersionNodePath(new 
GlobalRuleNodePath(NodePathPattern.IDENTIFIER)).isActiveVersionPath(event.getKey()))
 {
             return;
         }
-        if (!new 
ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository()).checkSame(event))
 {
-            return;
-        }
         String ruleType = NodePathSearcher.get(event.getKey(), 
GlobalRuleNodePath.createRuleTypeSearchCriteria());
         RuleConfiguration ruleConfig = 
contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getGlobalRuleService().load(ruleType);
         
contextManager.getMetaDataContextManager().getGlobalConfigurationManager().alterGlobalRuleConfiguration(ruleConfig);
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/PropertiesChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/PropertiesChangedHandler.java
similarity index 84%
rename from 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/PropertiesChangedHandler.java
rename to 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/PropertiesChangedHandler.java
index a3333260e18..079e6f45890 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/PropertiesChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/PropertiesChangedHandler.java
@@ -15,13 +15,12 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.type;
 
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler;
-import org.apache.shardingsphere.mode.metadata.manager.ActiveVersionChecker;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.GlobalConfigurationChangedHandler;
 import org.apache.shardingsphere.mode.node.path.NodePath;
 import 
org.apache.shardingsphere.mode.node.path.type.global.config.GlobalPropertiesNodePath;
 import org.apache.shardingsphere.mode.node.path.version.VersionNodePath;
@@ -32,7 +31,7 @@ import java.util.Collection;
 /**
  * Properties changed handler.
  */
-public final class PropertiesChangedHandler implements 
GlobalDataChangedEventHandler {
+public final class PropertiesChangedHandler implements 
GlobalConfigurationChangedHandler {
     
     @Override
     public NodePath getSubscribedNodePath() {
@@ -49,9 +48,6 @@ public final class PropertiesChangedHandler implements 
GlobalDataChangedEventHan
         if (!new VersionNodePath(new 
GlobalPropertiesNodePath()).isActiveVersionPath(event.getKey())) {
             return;
         }
-        if (!new 
ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository()).checkSame(event))
 {
-            return;
-        }
         
contextManager.getMetaDataContextManager().getGlobalConfigurationManager().alterProperties(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getPropsService().load());
     }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/GlobalMetaDataChangedListener.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/GlobalMetaDataChangedListener.java
index a5b47ad0b96..30e6c943005 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/GlobalMetaDataChangedListener.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/GlobalMetaDataChangedListener.java
@@ -22,6 +22,8 @@ import 
org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCac
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 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.dispatch.handler.global.config.GlobalConfigurationChangedHandler;
+import org.apache.shardingsphere.mode.metadata.manager.ActiveVersionChecker;
 import 
org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener;
 
 /**
@@ -37,6 +39,9 @@ public final class GlobalMetaDataChangedListener implements 
DataChangedEventList
     @Override
     public void onChange(final DataChangedEvent event) {
         if (handler.getSubscribedTypes().contains(event.getType())) {
+            if (handler instanceof GlobalConfigurationChangedHandler && !new 
ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository()).checkSame(event))
 {
+                return;
+            }
             OrderedServicesCache.clearCache();
             handler.handle(contextManager, event);
         }
diff --git 
a/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler
 
b/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler
index af33db619c8..4f3b50834da 100644
--- 
a/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler
+++ 
b/mode/type/cluster/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.GlobalDataChangedEventHandler
@@ -15,8 +15,8 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.GlobalRuleChangedHandler
-org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.PropertiesChangedHandler
+org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.type.GlobalRuleChangedHandler
+org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.type.PropertiesChangedHandler
 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.state.DatabaseListenerChangedHandler
 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.state.ClusterStateChangedHandler
 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.node.QualifiedDataSourceChangedHandler
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalRuleChangedHandlerTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/GlobalRuleChangedHandlerTest.java
similarity index 95%
rename from 
mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalRuleChangedHandlerTest.java
rename to 
mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/GlobalRuleChangedHandlerTest.java
index cad137b6c49..1842e5bfe62 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/GlobalRuleChangedHandlerTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/GlobalRuleChangedHandlerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.type;
 
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
@@ -65,7 +65,6 @@ class GlobalRuleChangedHandlerTest {
     
     @Test
     void assertHandle() {
-        
when(contextManager.getPersistServiceFacade().getRepository().query("/rules/foo_rule/active_version")).thenReturn("rule_value");
         RuleConfiguration ruleConfig = mock(RuleConfiguration.class);
         
when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getGlobalRuleService().load("foo_rule")).thenReturn(ruleConfig);
         handler.handle(contextManager, new 
DataChangedEvent("/rules/foo_rule/active_version", "rule_value", Type.ADDED));
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/PropertiesChangedHandlerTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/PropertiesChangedHandlerTest.java
similarity index 95%
rename from 
mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/PropertiesChangedHandlerTest.java
rename to 
mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/PropertiesChangedHandlerTest.java
index 925af21426e..f577d9414a8 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/PropertiesChangedHandlerTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/config/type/PropertiesChangedHandlerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global.config.type;
 
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
@@ -59,7 +59,6 @@ class PropertiesChangedHandlerTest {
     
     @Test
     void assertHandle() {
-        
when(contextManager.getPersistServiceFacade().getRepository().query("/props/active_version")).thenReturn("key=value");
         Properties props = mock(Properties.class);
         
when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getPropsService().load()).thenReturn(props);
         handler.handle(contextManager, new 
DataChangedEvent("/props/active_version", "key=value", Type.ADDED));

Reply via email to