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