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