未验证 提交 7e64fa1c 编写于 作者: J Juan Pan(Trista) 提交者: GitHub

Orchestration support add new schema (#6754)

上级 b3e95295
......@@ -103,9 +103,10 @@ public final class ConfigCenter {
}
private void persistDataSourceConfiguration(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations, final boolean isOverwrite) {
if (isOverwrite) {
persistDataSourceConfiguration(schemaName, dataSourceConfigurations);
if (dataSourceConfigurations.isEmpty() || !isOverwrite) {
return;
}
persistDataSourceConfiguration(schemaName, dataSourceConfigurations);
}
private void persistDataSourceConfiguration(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations) {
......
......@@ -49,7 +49,7 @@ public final class ConfigurationListenerManager {
* Initialize all configuration changed listeners.
*/
public void initListeners() {
schemaChangedListener.watch(ChangedType.UPDATED, ChangedType.DELETED);
schemaChangedListener.watch(ChangedType.UPDATED, ChangedType.DELETED, ChangedType.ADDED);
propertiesChangedListener.watch(ChangedType.UPDATED);
authenticationChangedListener.watch(ChangedType.UPDATED);
metricsConfigurationChangedListener.watch(ChangedType.UPDATED);
......
......@@ -75,6 +75,9 @@ public final class SchemaChangedListener extends PostOrchestrationRepositoryEven
if (Strings.isNullOrEmpty(shardingSchemaName) || !isValidNodeChangedEvent(shardingSchemaName, event.getKey())) {
return new IgnoredOrchestrationEvent();
}
if (ChangedType.ADDED == event.getChangedType()) {
return createAddedEvent(shardingSchemaName);
}
if (ChangedType.UPDATED == event.getChangedType()) {
return createUpdatedEvent(shardingSchemaName, event);
}
......@@ -88,7 +91,7 @@ public final class SchemaChangedListener extends PostOrchestrationRepositoryEven
Collection<String> persistShardingSchemaNames = configurationNode.splitSchemaName(shardingSchemaNames);
Set<String> addedSchemaNames = SetUtils.difference(new HashSet<>(persistShardingSchemaNames), new HashSet<>(existedSchemaNames));
if (!addedSchemaNames.isEmpty()) {
return createUpdatedEventForNewSchema(addedSchemaNames.iterator().next());
return createAddedEvent(addedSchemaNames.iterator().next());
}
Set<String> deletedSchemaNames = SetUtils.difference(new HashSet<>(existedSchemaNames), new HashSet<>(persistShardingSchemaNames));
if (!deletedSchemaNames.isEmpty()) {
......@@ -101,8 +104,17 @@ public final class SchemaChangedListener extends PostOrchestrationRepositoryEven
return configurationNode.getDataSourcePath(shardingSchemaName).equals(nodeFullPath) || configurationNode.getRulePath(shardingSchemaName).equals(nodeFullPath);
}
private OrchestrationEvent createAddedEvent(final String shardingSchemaName) {
existedSchemaNames.add(shardingSchemaName);
if (!isOwnCompleteConfigurations(shardingSchemaName)) {
return new SchemaAddedEvent(shardingSchemaName, Collections.emptyMap(), Collections.emptyList());
}
return new SchemaAddedEvent(shardingSchemaName, configurationService.loadDataSourceConfigurations(shardingSchemaName), createRuleConfigurations(shardingSchemaName));
}
private OrchestrationEvent createUpdatedEvent(final String shardingSchemaName, final DataChangedEvent event) {
return existedSchemaNames.contains(shardingSchemaName) ? createUpdatedEventForExistedSchema(event, shardingSchemaName) : createUpdatedEventForNewSchema(shardingSchemaName);
// TODO Consider remove judgement.
return existedSchemaNames.contains(shardingSchemaName) ? createUpdatedEventForExistedSchema(event, shardingSchemaName) : createAddedEvent(shardingSchemaName);
}
private OrchestrationEvent createUpdatedEventForExistedSchema(final DataChangedEvent event, final String shardingSchemaName) {
......@@ -125,14 +137,6 @@ public final class SchemaChangedListener extends PostOrchestrationRepositoryEven
shardingSchemaName, new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(configurations.getRules()));
}
private OrchestrationEvent createUpdatedEventForNewSchema(final String shardingSchemaName) {
existedSchemaNames.add(shardingSchemaName);
if (!isOwnCompleteConfigurations(shardingSchemaName)) {
return new SchemaAddedEvent(shardingSchemaName, Collections.emptyMap(), Collections.emptyList());
}
return new SchemaAddedEvent(shardingSchemaName, configurationService.loadDataSourceConfigurations(shardingSchemaName), createRuleConfigurations(shardingSchemaName));
}
private boolean isOwnCompleteConfigurations(final String shardingSchemaName) {
return configurationService.hasDataSourceConfiguration(shardingSchemaName) && configurationService.hasRuleConfiguration(shardingSchemaName);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册