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 <[email protected]>
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);
}
}