You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by yx...@apache.org on 2022/06/30 14:04:39 UTC
[shardingsphere] branch master updated: Add ShardingSphereDatabase.reloadRules (#18742)
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 a3a0d3db8d4 Add ShardingSphereDatabase.reloadRules (#18742)
a3a0d3db8d4 is described below
commit a3a0d3db8d419dd45cc1e0c33c64d7f81edc0655
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Jun 30 22:04:30 2022 +0800
Add ShardingSphereDatabase.reloadRules (#18742)
---
.../infra/metadata/database/ShardingSphereDatabase.java | 9 +++++++++
.../shardingsphere/mode/manager/ContextManager.java | 15 +++------------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
index 279a95ea9ae..c43123d8fa5 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
@@ -118,4 +118,13 @@ public final class ShardingSphereDatabase {
public boolean hasDataSource() {
return !resource.getDataSources().isEmpty();
}
+
+ /**
+ * Reload rules.
+ */
+ public synchronized void reloadRules() {
+ Collection<ShardingSphereRule> databaseRules = DatabaseRulesBuilder.build(name, new DataSourceProvidedDatabaseConfiguration(resource.getDataSources(), ruleMetaData.getConfigurations()));
+ ruleMetaData.getRules().clear();
+ ruleMetaData.getRules().addAll(databaseRules);
+ }
}
diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index f944c1f3e6b..ec52ad11eea 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -43,9 +43,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericS
import org.apache.shardingsphere.infra.metadata.database.schema.builder.SystemSchemaBuilder;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
-import org.apache.shardingsphere.infra.rule.builder.schema.DatabaseRulesBuilder;
import org.apache.shardingsphere.infra.rule.identifier.type.InstanceAwareRule;
import org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
@@ -175,7 +173,7 @@ public final class ContextManager implements AutoCloseable {
private void alterTable(final ShardingSphereDatabase database, final String schemaName, final ShardingSphereTable beBoChangedTable) {
if (containsMutableDataNodeRule(database, schemaName, beBoChangedTable.getName())) {
- refreshRules(database);
+ database.reloadRules();
}
database.getSchemas().get(schemaName).put(beBoChangedTable.getName(), beBoChangedTable);
}
@@ -191,13 +189,6 @@ public final class ContextManager implements AutoCloseable {
}
}
- private void refreshRules(final ShardingSphereDatabase database) {
- Collection<ShardingSphereRule> databaseRules = DatabaseRulesBuilder.build(
- database.getName(), new DataSourceProvidedDatabaseConfiguration(database.getResource().getDataSources(), database.getRuleMetaData().getConfigurations()));
- database.getRuleMetaData().getRules().clear();
- database.getRuleMetaData().getRules().addAll(databaseRules);
- }
-
/**
* Drop schema.
*
@@ -390,7 +381,7 @@ public final class ContextManager implements AutoCloseable {
public void reloadSchemaMetaData(final String databaseName, final String schemaName, final String dataSourceName) {
try {
ShardingSphereDatabase database = metaDataContexts.getMetaData().getDatabases().get(databaseName);
- refreshRules(database);
+ database.reloadRules();
GenericSchemaBuilderMaterials materials = new GenericSchemaBuilderMaterials(database.getProtocolType(), database.getResource().getDatabaseType(),
Collections.singletonMap(dataSourceName, database.getResource().getDataSources().get(dataSourceName)),
database.getRuleMetaData().getRules(), metaDataContexts.getMetaData().getProps(), schemaName);
@@ -445,7 +436,7 @@ public final class ContextManager implements AutoCloseable {
private Map<String, ShardingSphereSchema> loadActualSchema(final String databaseName) throws SQLException {
ShardingSphereDatabase database = metaDataContexts.getMetaData().getDatabases().get(databaseName);
Map<String, DataSource> dataSourceMap = database.getResource().getDataSources();
- refreshRules(database);
+ database.reloadRules();
DatabaseType databaseType = DatabaseTypeEngine.getDatabaseType(dataSourceMap.values());
Map<String, ShardingSphereSchema> result = new ConcurrentHashMap<>();
GenericSchemaBuilderMaterials materials = new GenericSchemaBuilderMaterials(database.getProtocolType(),