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