未验证 提交 c2e0a56f 编写于 作者: H Haoran Meng 提交者: GitHub

Fixes persist local configurations to config center when overwrite=false (#7247)

* Fixes persist local configurations to config center

* Fixes persist local configurations to config center
上级 6093ea8c
...@@ -84,7 +84,7 @@ public final class ConfigCenter { ...@@ -84,7 +84,7 @@ public final class ConfigCenter {
persistDataSourceConfigurations(schemaName, dataSourceConfigs, isOverwrite); persistDataSourceConfigurations(schemaName, dataSourceConfigs, isOverwrite);
persistRuleConfigurations(schemaName, ruleConfigurations, isOverwrite); persistRuleConfigurations(schemaName, ruleConfigurations, isOverwrite);
// TODO Consider removing the following one. // TODO Consider removing the following one.
persistSchemaName(schemaName, isOverwrite); persistSchemaName(schemaName);
} }
/** /**
...@@ -129,10 +129,9 @@ public final class ConfigCenter { ...@@ -129,10 +129,9 @@ public final class ConfigCenter {
} }
private void persistDataSourceConfigurations(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations, final boolean isOverwrite) { private void persistDataSourceConfigurations(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations, final boolean isOverwrite) {
if (dataSourceConfigurations.isEmpty() || !isOverwrite) { if (!dataSourceConfigurations.isEmpty() && (isOverwrite || !hasDataSourceConfiguration(schemaName))) {
return; persistDataSourceConfigurations(schemaName, dataSourceConfigurations);
} }
persistDataSourceConfigurations(schemaName, dataSourceConfigurations);
} }
private void persistDataSourceConfigurations(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations) { private void persistDataSourceConfigurations(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations) {
...@@ -143,10 +142,9 @@ public final class ConfigCenter { ...@@ -143,10 +142,9 @@ public final class ConfigCenter {
} }
private void persistRuleConfigurations(final String schemaName, final Collection<RuleConfiguration> ruleConfigurations, final boolean isOverwrite) { private void persistRuleConfigurations(final String schemaName, final Collection<RuleConfiguration> ruleConfigurations, final boolean isOverwrite) {
if (ruleConfigurations.isEmpty() || !isOverwrite) { if (!ruleConfigurations.isEmpty() && (isOverwrite || !hasRuleConfiguration(schemaName))) {
return; persistRuleConfigurations(schemaName, ruleConfigurations);
} }
persistRuleConfigurations(schemaName, ruleConfigurations);
} }
private void persistRuleConfigurations(final String schemaName, final Collection<RuleConfiguration> ruleConfigurations) { private void persistRuleConfigurations(final String schemaName, final Collection<RuleConfiguration> ruleConfigurations) {
...@@ -200,21 +198,22 @@ public final class ConfigCenter { ...@@ -200,21 +198,22 @@ public final class ConfigCenter {
} }
private void persistAuthentication(final Authentication authentication, final boolean isOverwrite) { private void persistAuthentication(final Authentication authentication, final boolean isOverwrite) {
if (null != authentication && isOverwrite) { if (null != authentication && (isOverwrite || !hasAuthentication())) {
repository.persist(node.getAuthenticationPath(), YamlEngine.marshal(new AuthenticationYamlSwapper().swapToYamlConfiguration(authentication))); repository.persist(node.getAuthenticationPath(), YamlEngine.marshal(new AuthenticationYamlSwapper().swapToYamlConfiguration(authentication)));
} }
} }
private void persistProperties(final Properties props, final boolean isOverwrite) { private void persistProperties(final Properties props, final boolean isOverwrite) {
if (!props.isEmpty() && isOverwrite) { if (!props.isEmpty() && (isOverwrite || !hasProperties())) {
repository.persist(node.getPropsPath(), YamlEngine.marshal(props)); repository.persist(node.getPropsPath(), YamlEngine.marshal(props));
} }
} }
private void persistSchemaName(final String schemaName, final boolean isOverwrite) { private boolean hasProperties() {
if (!isOverwrite) { return !Strings.isNullOrEmpty(repository.get(node.getPropsPath()));
return; }
}
private void persistSchemaName(final String schemaName) {
String schemaNames = repository.get(node.getSchemaPath()); String schemaNames = repository.get(node.getSchemaPath());
if (Strings.isNullOrEmpty(schemaNames)) { if (Strings.isNullOrEmpty(schemaNames)) {
repository.persist(node.getSchemaPath(), schemaName); repository.persist(node.getSchemaPath(), schemaName);
......
...@@ -92,8 +92,8 @@ public final class ConfigCenterTest { ...@@ -92,8 +92,8 @@ public final class ConfigCenterTest {
public void assertPersistConfigurationForShardingRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() { public void assertPersistConfigurationForShardingRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false); configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(SHARDING_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
@Test @Test
...@@ -114,8 +114,8 @@ public final class ConfigCenterTest { ...@@ -114,8 +114,8 @@ public final class ConfigCenterTest {
public void assertPersistConfigurationForShardingRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsNotExisted() { public void assertPersistConfigurationForShardingRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsNotExisted() {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false); configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(SHARDING_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
...@@ -131,16 +131,16 @@ public final class ConfigCenterTest { ...@@ -131,16 +131,16 @@ public final class ConfigCenterTest {
public void assertPersistConfigurationForMasterSlaveRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() { public void assertPersistConfigurationForMasterSlaveRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false); configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(MASTER_SLAVE_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
@Test @Test
public void assertPersistConfigurationForMasterSlaveRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsNotExisted() { public void assertPersistConfigurationForMasterSlaveRuleWithoutAuthenticationAndIsNotOverwriteAndConfigurationIsNotExisted() {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false); configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(MASTER_SLAVE_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
@Test @Test
...@@ -155,16 +155,16 @@ public final class ConfigCenterTest { ...@@ -155,16 +155,16 @@ public final class ConfigCenterTest {
public void assertPersistConfigurationForShardingRuleWithAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() { public void assertPersistConfigurationForShardingRuleWithAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false); configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(SHARDING_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
@Test @Test
public void assertPersistConfigurationForShardingRuleWithAuthenticationAndIsNotOverwriteAndConfigurationIsNotExisted() { public void assertPersistConfigurationForShardingRuleWithAuthenticationAndIsNotOverwriteAndConfigurationIsNotExisted() {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false); configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createRuleConfigurations(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(SHARDING_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
@Test @Test
...@@ -179,8 +179,8 @@ public final class ConfigCenterTest { ...@@ -179,8 +179,8 @@ public final class ConfigCenterTest {
public void assertPersistConfigurationForMasterSlaveRuleWithAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() { public void assertPersistConfigurationForMasterSlaveRuleWithAuthenticationAndIsNotOverwriteAndConfigurationIsExisted() {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false); configurationService.persistConfigurations("sharding_db", createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(MASTER_SLAVE_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
@Test @Test
...@@ -188,8 +188,8 @@ public final class ConfigCenterTest { ...@@ -188,8 +188,8 @@ public final class ConfigCenterTest {
ConfigCenter configurationService = new ConfigCenter(configurationRepository); ConfigCenter configurationService = new ConfigCenter(configurationRepository);
configurationService.persistConfigurations("sharding_db", configurationService.persistConfigurations("sharding_db",
createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false); createDataSourceConfigurations(), createMasterSlaveRuleConfiguration(), false);
verify(configurationRepository, times(0)).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any()); verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"), ArgumentMatchers.any());
verify(configurationRepository, times(0)).persist("/config/schema/sharding_db/rule", readYAML(MASTER_SLAVE_RULE_YAML)); verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), ArgumentMatchers.any());
} }
@Test @Test
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册