You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/11/16 03:32:32 UTC
[shardingsphere] branch master updated: Refactor ShardingSphereDatabase.reloadRules() (#22195)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 24a7581fdaa Refactor ShardingSphereDatabase.reloadRules() (#22195)
24a7581fdaa is described below
commit 24a7581fdaab1b2f67b1e3bceac50a4e8596bfe5
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Wed Nov 16 11:32:23 2022 +0800
Refactor ShardingSphereDatabase.reloadRules() (#22195)
* Build SingleTableRule ahead of time
* Adjustment param name
---
.../infra/metadata/database/ShardingSphereDatabase.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
index 3cf527949b6..17761839f07 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
@@ -180,10 +180,13 @@ public final class ShardingSphereDatabase {
*/
public synchronized void reloadRules(final Class<? extends ShardingSphereRule> ruleClass) {
Collection<? extends ShardingSphereRule> toBeReloadedRules = ruleMetaData.findRules(ruleClass);
- RuleConfiguration config = toBeReloadedRules.stream().map(ShardingSphereRule::getConfiguration).findFirst().orElse(null);
+ RuleConfiguration ruleConfig = toBeReloadedRules.stream().map(ShardingSphereRule::getConfiguration).findFirst().orElse(null);
+ Collection<ShardingSphereRule> databaseRules = new LinkedList<>(ruleMetaData.getRules());
toBeReloadedRules.stream().findFirst().ifPresent(optional -> {
- ruleMetaData.getRules().removeAll(toBeReloadedRules);
- ruleMetaData.getRules().add(((MutableDataNodeRule) optional).reloadRule(config, name, resourceMetaData.getDataSources(), ruleMetaData.getRules()));
+ databaseRules.removeAll(toBeReloadedRules);
+ databaseRules.add(((MutableDataNodeRule) optional).reloadRule(ruleConfig, name, resourceMetaData.getDataSources(), databaseRules));
});
+ ruleMetaData.getRules().clear();
+ ruleMetaData.getRules().addAll(databaseRules);
}
}