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 c2cb6db1ef4 Avoid refresh global rule when feature rule changed
(#29658)
c2cb6db1ef4 is described below
commit c2cb6db1ef402ee18ee017c82f5ce585390fac79
Author: zhaojinchao <[email protected]>
AuthorDate: Fri Jan 5 17:10:22 2024 +0800
Avoid refresh global rule when feature rule changed (#29658)
* Avoid refresh global rule when feature rule changed
* Fix checkstyle
---
.../manager/context/ConfigurationContextManager.java | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
index 80eb87750bf..be507c10ec7 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
@@ -152,7 +152,7 @@ public final class ConfigurationContextManager {
try {
Collection<ResourceHeldRule> staleResourceHeldRules =
getStaleResourceHeldRules(databaseName);
staleResourceHeldRules.forEach(ResourceHeldRule::closeStaleResource);
- MetaDataContexts reloadMetaDataContexts =
createMetaDataContexts(databaseName, false, null, ruleConfigs);
+ MetaDataContexts reloadMetaDataContexts =
createMetaDataContextsWhenRuleChanged(databaseName, false, null, ruleConfigs);
alterSchemaMetaData(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
metaDataContexts.get().getMetaData().getDatabase(databaseName));
metaDataContexts.set(reloadMetaDataContexts);
metaDataContexts.get().getMetaData().getDatabase(databaseName).getSchemas().putAll(newShardingSphereSchemas(metaDataContexts.get().getMetaData().getDatabase(databaseName)));
@@ -310,6 +310,23 @@ public final class ConfigurationContextManager {
return result;
}
+ /**
+ * Create meta data contexts when rule configuration changed.
+ *
+ * @param databaseName database name
+ * @param internalLoadMetaData internal load meta data
+ * @param switchingResource switching resource
+ * @param ruleConfigs rule configs
+ * @return MetaDataContexts meta data contexts
+ * @throws SQLException SQL exception
+ */
+ public MetaDataContexts createMetaDataContextsWhenRuleChanged(final String
databaseName, final boolean internalLoadMetaData, final SwitchingResource
switchingResource,
+ final
Collection<RuleConfiguration> ruleConfigs) throws SQLException {
+ return newMetaDataContexts(new
ShardingSphereMetaData(createChangedDatabases(databaseName,
internalLoadMetaData, switchingResource, ruleConfigs),
+
metaDataContexts.get().getMetaData().getGlobalResourceMetaData(),
metaDataContexts.get().getMetaData().getGlobalRuleMetaData(),
+ metaDataContexts.get().getMetaData().getProps()));
+ }
+
/**
* Create meta data contexts.
*