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 e31fb2536d0 Add ActiveVersionChecker (#34299)
e31fb2536d0 is described below

commit e31fb2536d0114a46a42f35b4775879dabe2c7db
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 10 19:51:35 2025 +0800

    Add ActiveVersionChecker (#34299)
    
    * Add ActiveVersionChecker
    
    * Add ActiveVersionChecker
    
    * Add ActiveVersionChecker
---
 .../dispatch/checker/ActiveVersionChecker.java     | 42 ++++++++++++++++++++++
 .../metadata/StorageUnitChangedHandler.java        |  7 ++--
 .../database/metadata/TableChangedHandler.java     |  5 ++-
 .../database/metadata/ViewChangedHandler.java      |  5 ++-
 .../handler/global/GlobalRuleChangedHandler.java   |  4 +--
 .../handler/global/PropertiesChangedHandler.java   |  5 ++-
 6 files changed, 53 insertions(+), 15 deletions(-)

diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/checker/ActiveVersionChecker.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/checker/ActiveVersionChecker.java
new file mode 100644
index 00000000000..8df8f227773
--- /dev/null
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/checker/ActiveVersionChecker.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.mode.manager.cluster.dispatch.checker;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+
+/**
+ * Active version checker.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ActiveVersionChecker {
+    
+    /**
+     * Check active version.
+     *
+     * @param contextManager context manager
+     * @param event data changed event
+     */
+    public static void checkActiveVersion(final ContextManager contextManager, 
final DataChangedEvent event) {
+        
ShardingSpherePreconditions.checkState(event.getValue().equals(contextManager.getPersistServiceFacade().getRepository().query(event.getKey())),
+                () -> new IllegalStateException(String.format("Invalid active 
version: %s of key: %s", event.getValue(), event.getKey())));
+    }
+}
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/StorageUnitChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/StorageUnitChangedHandler.java
index b9a3100ce8d..cc1ebcf9241 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/StorageUnitChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/StorageUnitChangedHandler.java
@@ -22,6 +22,7 @@ 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.manager.cluster.dispatch.checker.ActiveVersionChecker;
 
 import java.util.Collections;
 
@@ -41,8 +42,7 @@ public final class StorageUnitChangedHandler {
      * @param event data changed event
      */
     public void handleRegistered(final String databaseName, final String 
dataSourceUnitName, final DataChangedEvent event) {
-        
Preconditions.checkArgument(event.getValue().equals(contextManager.getPersistServiceFacade().getRepository().query(event.getKey())),
-                "Invalid active version: %s of key: %s", event.getValue(), 
event.getKey());
+        ActiveVersionChecker.checkActiveVersion(contextManager, event);
         DataSourcePoolProperties dataSourcePoolProps = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().load(databaseName,
 dataSourceUnitName);
         
contextManager.getMetaDataContextManager().getStorageUnitManager().registerStorageUnit(databaseName,
 Collections.singletonMap(dataSourceUnitName, dataSourcePoolProps));
     }
@@ -55,8 +55,7 @@ public final class StorageUnitChangedHandler {
      * @param event data changed event
      */
     public void handleAltered(final String databaseName, final String 
dataSourceUnitName, final DataChangedEvent event) {
-        
Preconditions.checkArgument(event.getValue().equals(contextManager.getPersistServiceFacade().getRepository().query(event.getKey())),
-                "Invalid active version: %s of key: %s", event.getValue(), 
event.getKey());
+        ActiveVersionChecker.checkActiveVersion(contextManager, event);
         DataSourcePoolProperties dataSourcePoolProps = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().load(databaseName,
 dataSourceUnitName);
         
contextManager.getMetaDataContextManager().getStorageUnitManager().alterStorageUnit(databaseName,
 Collections.singletonMap(dataSourceUnitName, dataSourcePoolProps));
     }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/TableChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/TableChangedHandler.java
index e77e047dcce..5c957759e17 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/TableChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/TableChangedHandler.java
@@ -17,11 +17,11 @@
 
 package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata;
 
-import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.metadata.persist.node.metadata.TableMetaDataNodePath;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.manager.ContextManager;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.checker.ActiveVersionChecker;
 import 
org.apache.shardingsphere.mode.metadata.refresher.ShardingSphereStatisticsRefreshEngine;
 
 /**
@@ -47,8 +47,7 @@ public final class TableChangedHandler {
      */
     public void handleCreatedOrAltered(final String databaseName, final String 
schemaName, final DataChangedEvent event) {
         String tableName = 
TableMetaDataNodePath.getTableNameByActiveVersionPath(event.getKey()).orElseThrow(()
 -> new IllegalStateException("Table name not found."));
-        
Preconditions.checkArgument(event.getValue().equals(contextManager.getPersistServiceFacade().getRepository().query(event.getKey())),
-                "Invalid active version: %s of key: %s", event.getValue(), 
event.getKey());
+        ActiveVersionChecker.checkActiveVersion(contextManager, event);
         ShardingSphereTable table = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataFacade().getTable().load(databaseName,
 schemaName, tableName);
         
contextManager.getMetaDataContextManager().getSchemaMetaDataManager().alterSchema(databaseName,
 schemaName, table, null);
         statisticsRefreshEngine.asyncRefresh();
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/ViewChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/ViewChangedHandler.java
index 7a2a70d89f0..b8c65bfbb91 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/ViewChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/ViewChangedHandler.java
@@ -17,11 +17,11 @@
 
 package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata;
 
-import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
 import 
org.apache.shardingsphere.metadata.persist.node.metadata.ViewMetaDataNodePath;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.manager.ContextManager;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.checker.ActiveVersionChecker;
 import 
org.apache.shardingsphere.mode.metadata.refresher.ShardingSphereStatisticsRefreshEngine;
 
 /**
@@ -47,8 +47,7 @@ public final class ViewChangedHandler {
      */
     public void handleCreatedOrAltered(final String databaseName, final String 
schemaName, final DataChangedEvent event) {
         String viewName = 
ViewMetaDataNodePath.getViewNameByActiveVersionPath(event.getKey()).orElseThrow(()
 -> new IllegalStateException("View name not found."));
-        
Preconditions.checkArgument(event.getValue().equals(contextManager.getPersistServiceFacade().getRepository().query(event.getKey())),
-                "Invalid active version: %s of key: %s", event.getValue(), 
event.getKey());
+        ActiveVersionChecker.checkActiveVersion(contextManager, event);
         ShardingSphereView view = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataFacade().getView().load(databaseName,
 schemaName, viewName);
         
contextManager.getMetaDataContextManager().getSchemaMetaDataManager().alterSchema(databaseName,
 schemaName, null, view);
         statisticsRefreshEngine.asyncRefresh();
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/GlobalRuleChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/GlobalRuleChangedHandler.java
index d60e2b33288..37456d371e1 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/GlobalRuleChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/GlobalRuleChangedHandler.java
@@ -24,6 +24,7 @@ import 
org.apache.shardingsphere.metadata.persist.node.GlobalNodePath;
 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.checker.ActiveVersionChecker;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.DataChangedEventHandler;
 import org.apache.shardingsphere.mode.spi.RuleConfigurationPersistDecorator;
 
@@ -56,8 +57,7 @@ public final class GlobalRuleChangedHandler implements 
DataChangedEventHandler {
         if (!ruleName.isPresent()) {
             return;
         }
-        
Preconditions.checkArgument(event.getValue().equals(contextManager.getPersistServiceFacade().getRepository().query(event.getKey())),
-                "Invalid active version: %s of key: %s", event.getValue(), 
event.getKey());
+        ActiveVersionChecker.checkActiveVersion(contextManager, event);
         Optional<RuleConfiguration> ruleConfig = 
contextManager.getPersistServiceFacade().getMetaDataPersistService().getGlobalRuleService().load(ruleName.get());
         Preconditions.checkArgument(ruleConfig.isPresent(), "Can not find rule 
configuration with name: %s", ruleName.get());
         
contextManager.getMetaDataContextManager().getGlobalConfigurationManager().alterGlobalRuleConfiguration(
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/PropertiesChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/PropertiesChangedHandler.java
index feac32b96e0..a3d4468ce37 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/PropertiesChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/PropertiesChangedHandler.java
@@ -17,11 +17,11 @@
 
 package org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.global;
 
-import com.google.common.base.Preconditions;
 import org.apache.shardingsphere.metadata.persist.node.GlobalNodePath;
 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.checker.ActiveVersionChecker;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.DataChangedEventHandler;
 
 import java.util.Arrays;
@@ -47,8 +47,7 @@ public final class PropertiesChangedHandler implements 
DataChangedEventHandler {
         if 
(!org.apache.shardingsphere.mode.path.GlobalNodePath.isPropsActiveVersionPath(event.getKey()))
 {
             return;
         }
-        
Preconditions.checkArgument(event.getValue().equals(contextManager.getPersistServiceFacade().getRepository().query(event.getKey())),
-                "Invalid active version: %s of key: %s", event.getValue(), 
event.getKey());
+        ActiveVersionChecker.checkActiveVersion(contextManager, event);
         
contextManager.getMetaDataContextManager().getGlobalConfigurationManager().alterProperties(contextManager.getPersistServiceFacade().getMetaDataPersistService().getPropsService().load());
     }
 }

Reply via email to