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 cda18a87242 Use log instead of exception when active version mismatch (#34848) cda18a87242 is described below commit cda18a87242ceba9d7a7437303b0d579cea8a44e Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Mon Mar 3 19:02:02 2025 +0800 Use log instead of exception when active version mismatch (#34848) --- .../manager/rule/DatabaseRuleItemManager.java | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) 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 4fd9ab8608a..9a892ed238e 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 @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.metadata.manager.rule; import com.google.common.base.Preconditions; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; import org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfiguration; import org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfigurationEmptyChecker; @@ -39,6 +40,7 @@ import java.sql.SQLException; * Database rule item manager. */ @RequiredArgsConstructor +@Slf4j public final class DatabaseRuleItemManager { private final MetaDataContexts metaDataContexts; @@ -55,15 +57,12 @@ public final class DatabaseRuleItemManager { */ @SuppressWarnings({"rawtypes", "unchecked"}) public void alter(final AlterRuleItem alterRuleItem) throws SQLException { - Preconditions.checkArgument(String.valueOf(alterRuleItem.getActiveVersion()).equals(metaDataPersistFacade.getRepository().query(alterRuleItem.getActiveVersionKey())), - "Invalid active version: %s of key: %s", alterRuleItem.getActiveVersion(), alterRuleItem.getActiveVersionKey()); + if (String.valueOf(alterRuleItem.getActiveVersion()).equals(metaDataPersistFacade.getRepository().query(alterRuleItem.getActiveVersionKey()))) { + log.warn("Invalid active version: {} of key: {}", alterRuleItem.getActiveVersion(), alterRuleItem.getActiveVersionKey()); + return; + } RuleItemConfigurationChangedProcessor processor = TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class, alterRuleItem.getType()); - String ruleType = alterRuleItem.getType().getRuleType(); - String itemType = alterRuleItem.getType().getRuleItemType(); - DatabaseRuleItem databaseRuleItem = alterRuleItem instanceof AlterNamedRuleItem - ? new DatabaseRuleItem(itemType, ((AlterNamedRuleItem) alterRuleItem).getItemName()) - : new DatabaseRuleItem(itemType); - VersionNodePath versionNodePath = new VersionNodePath(new DatabaseRuleNodePath(alterRuleItem.getDatabaseName(), ruleType, databaseRuleItem)); + VersionNodePath versionNodePath = getVersionNodePath(alterRuleItem); String yamlContent = metaDataPersistFacade.getMetaDataVersionService().loadContent(versionNodePath); String databaseName = alterRuleItem.getDatabaseName(); RuleConfiguration currentRuleConfig = processor.findRuleConfiguration(metaDataContexts.getMetaData().getDatabase(databaseName)); @@ -73,6 +72,15 @@ public final class DatabaseRuleItemManager { } } + private VersionNodePath getVersionNodePath(final AlterRuleItem alterRuleItem) { + String ruleType = alterRuleItem.getType().getRuleType(); + String itemType = alterRuleItem.getType().getRuleItemType(); + DatabaseRuleItem databaseRuleItem = alterRuleItem instanceof AlterNamedRuleItem + ? new DatabaseRuleItem(itemType, ((AlterNamedRuleItem) alterRuleItem).getItemName()) + : new DatabaseRuleItem(itemType); + return new VersionNodePath(new DatabaseRuleNodePath(alterRuleItem.getDatabaseName(), ruleType, databaseRuleItem)); + } + /** * Drop rule item. *