You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/03/05 11:37:36 UTC

(shardingsphere) branch master updated: Refactor ActiveVersionChecker (#34886)

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 ca37b7e6f82 Refactor ActiveVersionChecker (#34886)
ca37b7e6f82 is described below

commit ca37b7e6f8240d9276f92d1de9b56a8c91403436
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Mar 5 19:37:30 2025 +0800

    Refactor ActiveVersionChecker (#34886)
    
    * Refactor ActiveVersionChecker
    
    * Refactor ActiveVersionChecker
---
 .../mode/metadata/manager/ActiveVersionChecker.java   | 19 +++++++++----------
 .../manager/rule/DatabaseRuleItemManager.java         |  2 +-
 .../datasource/StorageUnitChangedHandler.java         | 15 ++++++++++-----
 .../database/metadata/type/TableChangedHandler.java   |  5 ++++-
 .../database/metadata/type/ViewChangedHandler.java    |  5 ++++-
 .../handler/global/type/GlobalRuleChangedHandler.java |  2 +-
 .../handler/global/type/PropertiesChangedHandler.java |  2 +-
 7 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ActiveVersionChecker.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ActiveVersionChecker.java
index 2f4157be15e..c0eacd0ba00 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ActiveVersionChecker.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ActiveVersionChecker.java
@@ -17,8 +17,7 @@
 
 package org.apache.shardingsphere.mode.metadata.manager;
 
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.node.path.type.version.VersionNodePath;
@@ -27,34 +26,34 @@ import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
 /**
  * Active version checker.
  */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
+@RequiredArgsConstructor
 @Slf4j
 public final class ActiveVersionChecker {
     
+    private final PersistRepository repository;
+    
     /**
      * Check whether the current version same with an active version.
      *
-     * @param repository repository
      * @param event data changed event
      * @return same or not
      */
-    public static boolean checkSame(final PersistRepository repository, final DataChangedEvent event) {
-        return checkSame(repository, event.getValue(), event.getKey());
+    public boolean checkSame(final DataChangedEvent event) {
+        return checkSame(event.getValue(), event.getKey());
     }
     
     /**
      * Check whether the current version same with an active version.
      *
-     * @param repository repository
      * @param versionNodePath version node path
      * @param currentVersion current version
      * @return same or not
      */
-    public static boolean checkSame(final PersistRepository repository, final VersionNodePath versionNodePath, final int currentVersion) {
-        return checkSame(repository, String.valueOf(currentVersion), versionNodePath.getActiveVersionPath());
+    public boolean checkSame(final VersionNodePath versionNodePath, final int currentVersion) {
+        return checkSame(String.valueOf(currentVersion), versionNodePath.getActiveVersionPath());
     }
     
-    private static boolean checkSame(final PersistRepository repository, final String currentVersion, final String activeVersionPath) {
+    private boolean checkSame(final String currentVersion, final String activeVersionPath) {
         if (currentVersion.equals(repository.query(activeVersionPath))) {
             return true;
         }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java
index 56c7e4b6971..83776982d9e 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/rule/DatabaseRuleItemManager.java
@@ -57,7 +57,7 @@ public final class DatabaseRuleItemManager {
     @SuppressWarnings({"rawtypes", "unchecked"})
     public void alter(final DatabaseRuleNodePath databaseRuleNodePath, final int currentVersion) throws SQLException {
         VersionNodePath versionNodePath = new VersionNodePath(databaseRuleNodePath);
-        if (!ActiveVersionChecker.checkSame(metaDataPersistFacade.getRepository(), versionNodePath, currentVersion)) {
+        if (!new ActiveVersionChecker(metaDataPersistFacade.getRepository()).checkSame(versionNodePath, currentVersion)) {
             return;
         }
         RuleItemConfigurationChangedProcessor processor = TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class,
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/StorageUnitChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/StorageUnitChangedHandler.java
index f14b02e98fd..1b252743fa1 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/StorageUnitChangedHandler.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/StorageUnitChangedHandler.java
@@ -18,12 +18,11 @@
 package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource;
 
 import com.google.common.base.Preconditions;
-import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.metadata.manager.ActiveVersionChecker;
 import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.DatabaseChangedHandler;
+import org.apache.shardingsphere.mode.metadata.manager.ActiveVersionChecker;
 import org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathPattern;
 import org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher;
 import org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageUnitNodePath;
@@ -35,11 +34,17 @@ import java.util.Optional;
 /**
  * Storage unit changed handler.
  */
-@RequiredArgsConstructor
 public final class StorageUnitChangedHandler implements DatabaseChangedHandler {
     
     private final ContextManager contextManager;
     
+    private final ActiveVersionChecker activeVersionChecker;
+    
+    public StorageUnitChangedHandler(final ContextManager contextManager) {
+        this.contextManager = contextManager;
+        activeVersionChecker = new ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository());
+    }
+    
     @Override
     public boolean isSubscribed(final String databaseName, final DataChangedEvent event) {
         return new VersionNodePathParser(new StorageUnitNodePath(databaseName, NodePathPattern.IDENTIFIER)).isActiveVersionPath(event.getKey());
@@ -67,7 +72,7 @@ public final class StorageUnitChangedHandler implements DatabaseChangedHandler {
     }
     
     private void handleRegistered(final String databaseName, final String storageUnitName, final DataChangedEvent event) {
-        if (!ActiveVersionChecker.checkSame(contextManager.getPersistServiceFacade().getRepository(), event)) {
+        if (!activeVersionChecker.checkSame(event)) {
             return;
         }
         DataSourcePoolProperties dataSourcePoolProps = contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load(databaseName, storageUnitName);
@@ -75,7 +80,7 @@ public final class StorageUnitChangedHandler implements DatabaseChangedHandler {
     }
     
     private void handleAltered(final String databaseName, final String storageUnitName, final DataChangedEvent event) {
-        if (!ActiveVersionChecker.checkSame(contextManager.getPersistServiceFacade().getRepository(), event)) {
+        if (!activeVersionChecker.checkSame(event)) {
             return;
         }
         DataSourcePoolProperties dataSourcePoolProps = contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load(databaseName, storageUnitName);
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
index 655558fcc33..6ae5167ce00 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/TableChangedHandler.java
@@ -33,10 +33,13 @@ public final class TableChangedHandler {
     
     private final ContextManager contextManager;
     
+    private final ActiveVersionChecker activeVersionChecker;
+    
     private final StatisticsRefreshEngine statisticsRefreshEngine;
     
     public TableChangedHandler(final ContextManager contextManager) {
         this.contextManager = contextManager;
+        activeVersionChecker = new ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository());
         statisticsRefreshEngine = new StatisticsRefreshEngine(contextManager);
     }
     
@@ -50,7 +53,7 @@ public final class TableChangedHandler {
     public void handleCreatedOrAltered(final String databaseName, final String schemaName, final DataChangedEvent event) {
         String tableName = new VersionNodePathParser(new TableMetadataNodePath())
                 .findIdentifierByActiveVersionPath(event.getKey(), 3).orElseThrow(() -> new IllegalStateException("Table name not found."));
-        if (!ActiveVersionChecker.checkSame(contextManager.getPersistServiceFacade().getRepository(), event)) {
+        if (!activeVersionChecker.checkSame(event)) {
             return;
         }
         ShardingSphereTable table = contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseMetaDataFacade().getTable().load(databaseName, schemaName, tableName);
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java
index 2f01727d455..f39750006cb 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/ViewChangedHandler.java
@@ -33,10 +33,13 @@ public final class ViewChangedHandler {
     
     private final ContextManager contextManager;
     
+    private final ActiveVersionChecker activeVersionChecker;
+    
     private final StatisticsRefreshEngine statisticsRefreshEngine;
     
     public ViewChangedHandler(final ContextManager contextManager) {
         this.contextManager = contextManager;
+        activeVersionChecker = new ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository());
         statisticsRefreshEngine = new StatisticsRefreshEngine(contextManager);
     }
     
@@ -50,7 +53,7 @@ public final class ViewChangedHandler {
     public void handleCreatedOrAltered(final String databaseName, final String schemaName, final DataChangedEvent event) {
         String viewName = new VersionNodePathParser(new ViewMetadataNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 3)
                 .orElseThrow(() -> new IllegalStateException("View name not found."));
-        if (!ActiveVersionChecker.checkSame(contextManager.getPersistServiceFacade().getRepository(), event)) {
+        if (!activeVersionChecker.checkSame(event)) {
             return;
         }
         ShardingSphereView view = contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDatabaseMetaDataFacade().getView().load(databaseName, schemaName, viewName);
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java
index 8ae66290624..76b56d66d36 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/GlobalRuleChangedHandler.java
@@ -53,7 +53,7 @@ public final class GlobalRuleChangedHandler implements GlobalDataChangedEventHan
         if (!ruleType.isPresent()) {
             return;
         }
-        if (!ActiveVersionChecker.checkSame(contextManager.getPersistServiceFacade().getRepository(), event)) {
+        if (!new ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository()).checkSame(event)) {
             return;
         }
         RuleConfiguration ruleConfig = contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getGlobalRuleService().load(ruleType.get());
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java
index 3d714800ac0..6ea67d1c9ac 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/type/PropertiesChangedHandler.java
@@ -49,7 +49,7 @@ public final class PropertiesChangedHandler implements GlobalDataChangedEventHan
         if (!new VersionNodePathParser(new GlobalPropertiesNodePath()).isActiveVersionPath(event.getKey())) {
             return;
         }
-        if (!ActiveVersionChecker.checkSame(contextManager.getPersistServiceFacade().getRepository(), event)) {
+        if (!new ActiveVersionChecker(contextManager.getPersistServiceFacade().getRepository()).checkSame(event)) {
             return;
         }
         contextManager.getMetaDataContextManager().getGlobalConfigurationManager().alterProperties(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getPropsService().load());