This is an automated email from the ASF dual-hosted git repository. jianglongtao pushed a commit to branch fix-33341 in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
commit 996cd138ad2210d16c03f0082bc644ace36cd40b Author: Raigor <[email protected]> AuthorDate: Tue Oct 15 15:52:10 2024 +0800 Restore authority password after commit migration (refresh metadata) (#18) --- .../apache/shardingsphere/mode/manager/ContextManager.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java index edacb493f9e..d801d0f39eb 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java @@ -18,6 +18,7 @@ package org.apache.shardingsphere.mode.manager; import com.google.common.base.Strings; +import com.sphereex.dbplusengine.mode.decorator.GlobalRuleConfigurationDecorator; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.infra.config.props.ConfigurationProperties; @@ -38,9 +39,11 @@ import org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericS import org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial; import org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema; +import org.apache.shardingsphere.infra.rule.ShardingSphereRule; import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder; import org.apache.shardingsphere.infra.state.cluster.ClusterState; import org.apache.shardingsphere.infra.state.cluster.ClusterStateContext; +import org.apache.shardingsphere.infra.util.SphereEx; import org.apache.shardingsphere.metadata.persist.MetaDataBasedPersistService; import org.apache.shardingsphere.mode.manager.context.ConfigurationContextManager; import org.apache.shardingsphere.mode.manager.context.ResourceMetaDataContextManager; @@ -184,9 +187,18 @@ public final class ContextManager implements AutoCloseable { MetaDataContexts result = new MetaDataContexts(metaDataPersistService, new ShardingSphereMetaData(changedDatabases, metaDataContexts.get().getMetaData().getGlobalResourceMetaData(), changedGlobalMetaData, props)); switchingResource.closeStaleDataSources(); + restoreGlobalRules(result); return result; } + @SphereEx + private void restoreGlobalRules(final MetaDataContexts metaDataContexts) { + Collection<ShardingSphereRule> globalRules = new GlobalRuleConfigurationDecorator().restore( + metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules(), metaDataContexts.getStatistics(), instanceContext); + metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules().clear(); + metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules().addAll(globalRules); + } + /** * Delete schema names. *
