This is an automated email from the ASF dual-hosted git repository.
yx9o 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 a6a09ba68ba Remove use original database to build new MetaDataContexts
(#34222)
a6a09ba68ba is described below
commit a6a09ba68baf3bad8dc088f2af8ebecf9ad58fa5
Author: Haoran Meng <[email protected]>
AuthorDate: Thu Jan 2 14:44:54 2025 +0800
Remove use original database to build new MetaDataContexts (#34222)
---
.../manager/DatabaseRuleConfigurationManager.java | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
index 9cf95b320a9..50361e42ecd 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
@@ -36,6 +36,7 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
/**
* Database rule configuration manager.
@@ -74,7 +75,7 @@ public final class DatabaseRuleConfigurationManager {
rules.removeIf(each ->
each.getConfiguration().getClass().isAssignableFrom(ruleConfig.getClass()));
rules.addAll(DatabaseRulesBuilder.build(
databaseName, database.getProtocolType(),
database.getRuleMetaData().getRules(), ruleConfig, computeNodeInstanceContext,
database.getResourceMetaData()));
- refreshMetadata(databaseName, database, rules);
+ refreshMetadata(databaseName, getRuleConfigurations(rules));
}
/**
@@ -98,14 +99,16 @@ public final class DatabaseRuleConfigurationManager {
rules.addAll(DatabaseRulesBuilder.build(
databaseName, database.getProtocolType(),
database.getRuleMetaData().getRules(), ruleConfig, computeNodeInstanceContext,
database.getResourceMetaData()));
}
- refreshMetadata(databaseName, database, rules);
+ refreshMetadata(databaseName, getRuleConfigurations(rules));
}
- private void refreshMetadata(final String databaseName, final
ShardingSphereDatabase database, final Collection<ShardingSphereRule> rules)
throws SQLException {
- database.getRuleMetaData().getRules().clear();
- database.getRuleMetaData().getRules().addAll(rules);
+ private void refreshMetadata(final String databaseName, final
Collection<RuleConfiguration> ruleConfigurations) throws SQLException {
MetaDataContexts reloadMetaDataContexts =
MetaDataContextsFactory.createByAlterRule(databaseName, false,
- database.getRuleMetaData().getConfigurations(),
metaDataContexts.get(), metaDataPersistService, computeNodeInstanceContext);
+ ruleConfigurations, metaDataContexts.get(),
metaDataPersistService, computeNodeInstanceContext);
metaDataContexts.set(reloadMetaDataContexts);
}
+
+ private Collection<RuleConfiguration> getRuleConfigurations(final
Collection<ShardingSphereRule> rules) {
+ return
rules.stream().map(ShardingSphereRule::getConfiguration).collect(Collectors.toList());
+ }
}