You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by xi...@apache.org on 2020/08/05 07:37:24 UTC
[shardingsphere] branch master updated: Decouple MasterSlaveRule
This is an automated email from the ASF dual-hosted git repository.
xiaoyu 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 344784d Decouple MasterSlaveRule
new 9a5ffdc Merge pull request #6635 from menghaoranss/issue6613-2
344784d is described below
commit 344784d72774edb86d8aa6656813836746cb502e
Author: menghaoranss <lo...@163.com>
AuthorDate: Wed Aug 5 15:26:27 2020 +0800
Decouple MasterSlaveRule
---
.../OrchestrationShardingSphereDataSource.java | 24 +++++++++++-----------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
index 69fe72c..fd65585 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.driver.orchestration.internal.datasource;
-import com.google.common.base.Joiner;
import com.google.common.collect.Maps;
import com.google.common.eventbus.Subscribe;
import lombok.Getter;
@@ -45,7 +44,6 @@ import org.apache.shardingsphere.kernel.context.SchemaContext;
import org.apache.shardingsphere.kernel.context.SchemaContexts;
import org.apache.shardingsphere.kernel.context.StandardSchemaContexts;
import org.apache.shardingsphere.kernel.context.schema.ShardingSphereSchema;
-import org.apache.shardingsphere.masterslave.rule.MasterSlaveRule;
import org.apache.shardingsphere.orchestration.core.common.event.DataSourceChangedEvent;
import org.apache.shardingsphere.orchestration.core.common.event.PropertiesChangedEvent;
import org.apache.shardingsphere.orchestration.core.common.event.RuleConfigurationsChangedEvent;
@@ -158,21 +156,23 @@ public final class OrchestrationShardingSphereDataSource extends AbstractUnsuppo
this.dataSourceConfigurations.putAll(dataSourceConfigurations);
}
- // TODO decouple masterslave rule
private void disableDataSources() {
Collection<String> disabledDataSources = orchestrationFacade.getRegistryCenter().loadDisabledDataSources();
- if (!disabledDataSources.isEmpty()) {
- dataSource.getSchemaContexts().getSchemaContexts().forEach((key, value)
- -> value.getSchema().getRules().stream().filter(each -> each instanceof MasterSlaveRule).forEach(each -> disableDataSources((MasterSlaveRule) each, disabledDataSources, key)));
+ if (disabledDataSources.isEmpty()) {
+ return;
}
+ dataSource.getSchemaContexts().getSchemaContexts().forEach((key, value)
+ -> value.getSchema().getRules().stream().filter(each -> each instanceof StatusContainedRule).forEach(each -> disableDataSources((StatusContainedRule) each, disabledDataSources, key)));
}
- private void disableDataSources(final MasterSlaveRule masterSlaveRule, final Collection<String> disabledDataSources, final String schemaName) {
- masterSlaveRule.getSingleDataSourceRule().getSlaveDataSourceNames().forEach(each -> {
- if (disabledDataSources.contains(Joiner.on(".").join(schemaName, each))) {
- masterSlaveRule.updateRuleStatus(new DataSourceNameDisabledEvent(each, true));
- }
- });
+ private void disableDataSources(final StatusContainedRule statusContainedRule, final Collection<String> disabledDataSources, final String schemaName) {
+ disabledDataSources.stream().filter(each -> each.startsWith(schemaName)).map(this::getDataSourceName).forEach(each ->
+ statusContainedRule.updateRuleStatus(new DataSourceNameDisabledEvent(each, true))
+ );
+ }
+
+ private String getDataSourceName(final String disableDataSource) {
+ return new OrchestrationSchema(disableDataSource).getDataSourceName();
}
private void persistMetaData(final RuleSchemaMetaData metaData) {