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.
      * 

Reply via email to