You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/02/03 06:54:46 UTC
[shardingsphere] branch master updated: Init configuration node
after schema created (#9290)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 93a596d Init configuration node after schema created (#9290)
93a596d is described below
commit 93a596de4f5f1e0f6c2752d42248ba6418451737
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Wed Feb 3 14:54:12 2021 +0800
Init configuration node after schema created (#9290)
---
.../context/metadata/GovernanceMetaDataContexts.java | 10 ++++++++--
.../governance/core/config/ConfigCenter.java | 16 ++++++++++++++--
.../core/yaml/config/YamlConfigurationConverter.java | 3 +++
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
index 19990be..8e4d734 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
@@ -167,7 +167,7 @@ public final class GovernanceMetaDataContexts implements MetaDataContexts {
@Subscribe
public synchronized void renew(final MetaDataPersistedEvent event) throws SQLException {
Map<String, ShardingSphereMetaData> metaDataMap = new HashMap<>(metaDataContexts.getMetaDataMap());
- metaDataMap.put(event.getSchemaName(), createAddedMetaData(event));
+ metaDataMap.put(event.getSchemaName(), buildMetaData(event));
metaDataContexts = new StandardMetaDataContexts(metaDataMap, metaDataContexts.getExecutorEngine(), metaDataContexts.getAuthentication(), metaDataContexts.getProps());
governanceFacade.getConfigCenter().persistSchema(event.getSchemaName(), metaDataContexts.getMetaDataMap().get(event.getSchemaName()).getSchema());
ShardingSphereEventBus.getInstance().post(new DataSourceChangeCompletedEvent(event.getSchemaName(),
@@ -298,8 +298,14 @@ public final class GovernanceMetaDataContexts implements MetaDataContexts {
}
}
- private ShardingSphereMetaData createAddedMetaData(final MetaDataPersistedEvent event) throws SQLException {
+ private ShardingSphereMetaData buildMetaData(final MetaDataPersistedEvent event) throws SQLException {
String schemaName = event.getSchemaName();
+ if (!governanceFacade.getConfigCenter().hasDataSourceConfiguration(schemaName)) {
+ governanceFacade.getConfigCenter().persistDataSourceConfigurations(schemaName, new LinkedHashMap<>());
+ }
+ if (!governanceFacade.getConfigCenter().hasRuleConfiguration(schemaName)) {
+ governanceFacade.getConfigCenter().persistRuleConfigurations(schemaName, new LinkedList<>());
+ }
Map<String, Map<String, DataSource>> dataSourcesMap = createDataSourcesMap(Collections.singletonMap(schemaName,
governanceFacade.getConfigCenter().loadDataSourceConfigurations(schemaName)));
MetaDataContextsBuilder metaDataContextsBuilder = new MetaDataContextsBuilder(dataSourcesMap,
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
index 2c591fb..7f3ca07 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
@@ -215,7 +215,13 @@ public final class ConfigCenter {
}
}
- private void persistDataSourceConfigurations(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations) {
+ /**
+ * Persist data source configurations.
+ *
+ * @param schemaName schema name
+ * @param dataSourceConfigurations data source configurations
+ */
+ public void persistDataSourceConfigurations(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations) {
repository.persist(node.getDataSourcePath(schemaName), YamlEngine.marshal(createYamlDataSourceConfigurationWrap(dataSourceConfigurations)));
}
@@ -239,7 +245,13 @@ public final class ConfigCenter {
}
}
- private void persistRuleConfigurations(final String schemaName, final Collection<RuleConfiguration> ruleConfigurations) {
+ /**
+ * Persist rule configurations.
+ *
+ * @param schemaName schema name
+ * @param ruleConfigurations rule configurations
+ */
+ public void persistRuleConfigurations(final String schemaName, final Collection<RuleConfiguration> ruleConfigurations) {
repository.persist(node.getRulePath(schemaName), YamlEngine.marshal(createYamlRootRuleConfigurations(schemaName, ruleConfigurations)));
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java
index 624647f..2ef20b2 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java
@@ -46,6 +46,9 @@ public final class YamlConfigurationConverter {
*/
public static Map<String, DataSourceConfiguration> convertDataSourceConfigurations(final String yamlContent) {
YamlDataSourceConfigurationWrap result = YamlEngine.unmarshalWithFilter(yamlContent, YamlDataSourceConfigurationWrap.class);
+ if (null == result.getDataSources() || result.getDataSources().isEmpty()) {
+ return new LinkedHashMap<>();
+ }
return result.getDataSources().entrySet().stream().collect(Collectors.toMap(Entry::getKey, entry -> new DataSourceConfigurationYamlSwapper()
.swapToObject(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
}