You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/10/29 05:32:04 UTC
[shardingsphere] branch master updated: Consensus replication
configuration update (#7952)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 b2202c4 Consensus replication configuration update (#7952)
b2202c4 is described below
commit b2202c437a880d401a112890d5aeb64fde565578
Author: sandynz <42...@users.noreply.github.com>
AuthorDate: Thu Oct 29 13:31:42 2020 +0800
Consensus replication configuration update (#7952)
---
...susReplicationActualTableRuleConfiguration.java | 14 ++++----
...ConsensusReplicationNodeRuleConfiguration.java} | 20 ++++-------
...Rule.java => ConsensusReplicationNodeRule.java} | 18 ++++------
.../rule/ConsensusReplicationTableRule.java | 10 +++---
...susReplicationActualTableRuleConfiguration.java | 6 ++--
...ConsensusReplicationNodeRuleConfiguration.java} | 10 ++----
...ionActualTableRuleConfigurationYamlSwapper.java | 17 ++++++---
...plicationNodeRuleConfigurationYamlSwapper.java} | 23 ++++++------
.../rule/ConsensusReplicationRuleTest.java | 17 ++++++---
...ctualTableRuleConfigurationYamlSwapperTest.java | 34 ++++++++++++------
...ationNodeRuleConfigurationYamlSwapperTest.java} | 41 +++++++++-------------
...eplicationRuleConfigurationYamlSwapperTest.java | 29 ++++++++++-----
.../route/engine/ConsensusReplicationGroup.java | 6 ++--
...oup.java => ConsensusReplicationGroupNode.java} | 21 +++++------
.../engine/ConsensusReplicationSQLRouter.java | 15 +++++---
15 files changed, 149 insertions(+), 132 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
index de4d474..0db0452 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
@@ -22,6 +22,8 @@ import com.google.common.base.Strings;
import lombok.Getter;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
+import java.util.Collection;
+
/**
* Consensus replication actual table rule configuration.
*/
@@ -32,18 +34,14 @@ public final class ConsensusReplicationActualTableRuleConfiguration implements R
private final String replicaGroupId;
- private final String replicaPeers;
-
- private final String dataSourceName;
+ private final Collection<ConsensusReplicationNodeRuleConfiguration> replicaNodes;
- public ConsensusReplicationActualTableRuleConfiguration(final String physicsTable, final String replicaGroupId, final String replicaPeers, final String dataSourceName) {
+ public ConsensusReplicationActualTableRuleConfiguration(final String physicsTable, final String replicaGroupId, final Collection<ConsensusReplicationNodeRuleConfiguration> replicaNodes) {
Preconditions.checkArgument(!Strings.isNullOrEmpty(physicsTable), "physicsTable is required.");
Preconditions.checkArgument(!Strings.isNullOrEmpty(replicaGroupId), "replicaGroupId is required.");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(replicaPeers), "replicaPeers is required.");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(dataSourceName), "dataSourceName is required.");
+ Preconditions.checkArgument(null != replicaNodes, "replicaNodes is required.");
this.physicsTable = physicsTable;
this.replicaGroupId = replicaGroupId;
- this.replicaPeers = replicaPeers;
- this.dataSourceName = dataSourceName;
+ this.replicaNodes = replicaNodes;
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationNodeRuleConfiguration.java
similarity index 61%
copy from shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
copy to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationNodeRuleConfiguration.java
index de4d474..363dd70 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationNodeRuleConfiguration.java
@@ -23,27 +23,19 @@ import lombok.Getter;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
/**
- * Consensus replication actual table rule configuration.
+ * Consensus replication node rule configuration.
*/
@Getter
-public final class ConsensusReplicationActualTableRuleConfiguration implements RuleConfiguration {
+public final class ConsensusReplicationNodeRuleConfiguration implements RuleConfiguration {
- private final String physicsTable;
-
- private final String replicaGroupId;
-
- private final String replicaPeers;
+ private final String replicaPeer;
private final String dataSourceName;
- public ConsensusReplicationActualTableRuleConfiguration(final String physicsTable, final String replicaGroupId, final String replicaPeers, final String dataSourceName) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(physicsTable), "physicsTable is required.");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(replicaGroupId), "replicaGroupId is required.");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(replicaPeers), "replicaPeers is required.");
+ public ConsensusReplicationNodeRuleConfiguration(final String replicaPeer, final String dataSourceName) {
+ Preconditions.checkArgument(!Strings.isNullOrEmpty(replicaPeer), "replicaPeer is required.");
Preconditions.checkArgument(!Strings.isNullOrEmpty(dataSourceName), "dataSourceName is required.");
- this.physicsTable = physicsTable;
- this.replicaGroupId = replicaGroupId;
- this.replicaPeers = replicaPeers;
+ this.replicaPeer = replicaPeer;
this.dataSourceName = dataSourceName;
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationNodeRule.java
similarity index 67%
copy from shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
copy to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationNodeRule.java
index 17e9567..9172f43 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationNodeRule.java
@@ -19,26 +19,20 @@ package org.apache.shardingsphere.replication.consensus.rule;
import lombok.Getter;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationNodeRuleConfiguration;
/**
- * Consensus replication table rule.
+ * Consensus replication node rule.
*/
@Getter
-public final class ConsensusReplicationTableRule implements ShardingSphereRule {
+public final class ConsensusReplicationNodeRule implements ShardingSphereRule {
- private final String physicsTable;
-
- private final String replicaGroupId;
-
- private final String replicaPeers;
+ private final String replicaPeer;
private final String dataSourceName;
- public ConsensusReplicationTableRule(final ConsensusReplicationActualTableRuleConfiguration config) {
- physicsTable = config.getPhysicsTable();
- replicaGroupId = config.getReplicaGroupId();
- replicaPeers = config.getReplicaPeers();
+ public ConsensusReplicationNodeRule(final ConsensusReplicationNodeRuleConfiguration config) {
+ replicaPeer = config.getReplicaPeer();
dataSourceName = config.getDataSourceName();
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
index 17e9567..4c2ec18 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
@@ -21,6 +21,9 @@ import lombok.Getter;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
/**
* Consensus replication table rule.
*/
@@ -31,14 +34,11 @@ public final class ConsensusReplicationTableRule implements ShardingSphereRule {
private final String replicaGroupId;
- private final String replicaPeers;
-
- private final String dataSourceName;
+ private final Collection<ConsensusReplicationNodeRule> replicaNodeRules;
public ConsensusReplicationTableRule(final ConsensusReplicationActualTableRuleConfiguration config) {
physicsTable = config.getPhysicsTable();
replicaGroupId = config.getReplicaGroupId();
- replicaPeers = config.getReplicaPeers();
- dataSourceName = config.getDataSourceName();
+ replicaNodeRules = config.getReplicaNodes().stream().map(ConsensusReplicationNodeRule::new).collect(Collectors.toList());
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
index dee82cd..360e9d8 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
@@ -21,6 +21,8 @@ import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.infra.yaml.config.YamlConfiguration;
+import java.util.Collection;
+
/**
* Consensus replication actual table rule configuration for YAML.
*/
@@ -32,7 +34,5 @@ public final class YamlConsensusReplicationActualTableRuleConfiguration implemen
private String replicaGroupId;
- private String replicaPeers;
-
- private String dataSourceName;
+ private Collection<YamlConsensusReplicationNodeRuleConfiguration> replicaNodes;
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationNodeRuleConfiguration.java
similarity index 79%
copy from shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
copy to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationNodeRuleConfiguration.java
index dee82cd..ddd003b 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationNodeRuleConfiguration.java
@@ -22,17 +22,13 @@ import lombok.Setter;
import org.apache.shardingsphere.infra.yaml.config.YamlConfiguration;
/**
- * Consensus replication actual table rule configuration for YAML.
+ * Consensus replication node rule configuration for YAML.
*/
@Getter
@Setter
-public final class YamlConsensusReplicationActualTableRuleConfiguration implements YamlConfiguration {
+public final class YamlConsensusReplicationNodeRuleConfiguration implements YamlConfiguration {
- private String physicsTable;
-
- private String replicaGroupId;
-
- private String replicaPeers;
+ private String replicaPeer;
private String dataSourceName;
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlS [...]
index c7ecfbd..19aa88a 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java
@@ -19,7 +19,12 @@ package org.apache.shardingsphere.replication.consensus.yaml.swapper;
import org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationNodeRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationNodeRuleConfiguration;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
/**
* Consensus replication actual table rule configuration YAML swapper.
@@ -27,19 +32,23 @@ import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensus
public final class ConsensusReplicationActualTableRuleConfigurationYamlSwapper
implements YamlSwapper<YamlConsensusReplicationActualTableRuleConfiguration, ConsensusReplicationActualTableRuleConfiguration> {
+ private final ConsensusReplicationNodeRuleConfigurationYamlSwapper nodeRuleConfigurationYamlSwapper = new ConsensusReplicationNodeRuleConfigurationYamlSwapper();
+
@Override
public YamlConsensusReplicationActualTableRuleConfiguration swapToYamlConfiguration(final ConsensusReplicationActualTableRuleConfiguration data) {
+ Collection<YamlConsensusReplicationNodeRuleConfiguration> replicaNodes = data.getReplicaNodes().stream()
+ .map(nodeRuleConfigurationYamlSwapper::swapToYamlConfiguration).collect(Collectors.toList());
YamlConsensusReplicationActualTableRuleConfiguration result = new YamlConsensusReplicationActualTableRuleConfiguration();
result.setPhysicsTable(data.getPhysicsTable());
result.setReplicaGroupId(data.getReplicaGroupId());
- result.setReplicaPeers(data.getReplicaPeers());
- result.setDataSourceName(data.getDataSourceName());
+ result.setReplicaNodes(replicaNodes);
return result;
}
@Override
public ConsensusReplicationActualTableRuleConfiguration swapToObject(final YamlConsensusReplicationActualTableRuleConfiguration yamlConfig) {
- return new ConsensusReplicationActualTableRuleConfiguration(yamlConfig.getPhysicsTable(), yamlConfig.getReplicaGroupId(),
- yamlConfig.getReplicaPeers(), yamlConfig.getDataSourceName());
+ Collection<ConsensusReplicationNodeRuleConfiguration> replicaNodes = yamlConfig.getReplicaNodes().stream()
+ .map(nodeRuleConfigurationYamlSwapper::swapToObject).collect(Collectors.toList());
+ return new ConsensusReplicationActualTableRuleConfiguration(yamlConfig.getPhysicsTable(), yamlConfig.getReplicaGroupId(), replicaNodes);
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationNodeRuleConfigurationYamlSwapper.java
similarity index 50%
copy from shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java
copy to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationNodeRuleConfigurationYamlSwapper.java
index c7ecfbd..8c96be4 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationNodeRuleConfigurationYamlSwapper.java
@@ -18,28 +18,25 @@
package org.apache.shardingsphere.replication.consensus.yaml.swapper;
import org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper;
-import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
-import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationNodeRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationNodeRuleConfiguration;
/**
- * Consensus replication actual table rule configuration YAML swapper.
+ * Consensus replication node rule configuration YAML swapper.
*/
-public final class ConsensusReplicationActualTableRuleConfigurationYamlSwapper
- implements YamlSwapper<YamlConsensusReplicationActualTableRuleConfiguration, ConsensusReplicationActualTableRuleConfiguration> {
+public final class ConsensusReplicationNodeRuleConfigurationYamlSwapper
+ implements YamlSwapper<YamlConsensusReplicationNodeRuleConfiguration, ConsensusReplicationNodeRuleConfiguration> {
@Override
- public YamlConsensusReplicationActualTableRuleConfiguration swapToYamlConfiguration(final ConsensusReplicationActualTableRuleConfiguration data) {
- YamlConsensusReplicationActualTableRuleConfiguration result = new YamlConsensusReplicationActualTableRuleConfiguration();
- result.setPhysicsTable(data.getPhysicsTable());
- result.setReplicaGroupId(data.getReplicaGroupId());
- result.setReplicaPeers(data.getReplicaPeers());
+ public YamlConsensusReplicationNodeRuleConfiguration swapToYamlConfiguration(final ConsensusReplicationNodeRuleConfiguration data) {
+ YamlConsensusReplicationNodeRuleConfiguration result = new YamlConsensusReplicationNodeRuleConfiguration();
+ result.setReplicaPeer(data.getReplicaPeer());
result.setDataSourceName(data.getDataSourceName());
return result;
}
@Override
- public ConsensusReplicationActualTableRuleConfiguration swapToObject(final YamlConsensusReplicationActualTableRuleConfiguration yamlConfig) {
- return new ConsensusReplicationActualTableRuleConfiguration(yamlConfig.getPhysicsTable(), yamlConfig.getReplicaGroupId(),
- yamlConfig.getReplicaPeers(), yamlConfig.getDataSourceName());
+ public ConsensusReplicationNodeRuleConfiguration swapToObject(final YamlConsensusReplicationNodeRuleConfiguration yamlConfig) {
+ return new ConsensusReplicationNodeRuleConfiguration(yamlConfig.getReplicaPeer(), yamlConfig.getDataSourceName());
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRuleTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRuleTest.java
index 6d5e45f..b831323 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRuleTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRuleTest.java
@@ -19,11 +19,13 @@ package org.apache.shardingsphere.replication.consensus.rule;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationNodeRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
import org.junit.Test;
import java.util.Collection;
import java.util.Collections;
+import java.util.List;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
@@ -42,7 +44,7 @@ public final class ConsensusReplicationRuleTest {
private final String replicaGroupId = "raftGroupTest1";
- private final String replicaPeers = "127.0.0.1:9090";
+ private final String replicaPeer = "127.0.0.1:9090";
@Test
public void assertCannotFindRouting() {
@@ -58,14 +60,21 @@ public final class ConsensusReplicationRuleTest {
assertTrue(routingRuleOptional.isPresent());
ConsensusReplicationTableRule routingRule = routingRuleOptional.get();
assertNotNull(routingRule);
- assertThat(routingRule.getDataSourceName(), is(dataSourceName));
assertThat(routingRule.getPhysicsTable(), is(physicsTable));
assertThat(routingRule.getReplicaGroupId(), is(replicaGroupId));
- assertThat(routingRule.getReplicaPeers(), is(replicaPeers));
+ Collection<ConsensusReplicationNodeRule> replicaNodeRules = routingRule.getReplicaNodeRules();
+ assertNotNull(replicaNodeRules);
+ assertThat(replicaNodeRules.size(), is(1));
+ ConsensusReplicationNodeRule replicaNodeRule = replicaNodeRules.iterator().next();
+ assertThat(replicaNodeRule.getReplicaPeer(), is(replicaPeer));
+ assertThat(replicaNodeRule.getDataSourceName(), is(dataSourceName));
}
private ConsensusReplicationRule createConsensusReplicationRule() {
- ConsensusReplicationActualTableRuleConfiguration replicaGroup = new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName);
+ List<ConsensusReplicationNodeRuleConfiguration> replicaNodes = Collections.singletonList(
+ new ConsensusReplicationNodeRuleConfiguration(replicaPeer, dataSourceName)
+ );
+ ConsensusReplicationActualTableRuleConfiguration replicaGroup = new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaNodes);
Collection<ConsensusReplicationActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
ConsensusReplicationLogicTableRuleConfiguration table = new ConsensusReplicationLogicTableRuleConfiguration(logicTableName, replicaGroups);
ConsensusReplicationRuleConfiguration config = new ConsensusReplicationRuleConfiguration(Collections.singleton(table));
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationY [...]
index f148704..45b8f46 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java
@@ -18,10 +18,15 @@
package org.apache.shardingsphere.replication.consensus.yaml.swapper;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationNodeRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationNodeRuleConfiguration;
import org.junit.Test;
+import java.util.Collections;
+
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
public class ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest {
@@ -34,26 +39,30 @@ public class ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest {
private final String replicaGroupId = "raftGroupTest1";
- private final String replicaPeers = "127.0.0.1:9090";
+ private final String replicaPeer = "127.0.0.1:9090";
@Test(expected = IllegalArgumentException.class)
public void assertSwapToYamlConfigurationWithMinProperties() {
- swapper.swapToYamlConfiguration(new ConsensusReplicationActualTableRuleConfiguration(null, null, null, null));
+ swapper.swapToYamlConfiguration(new ConsensusReplicationActualTableRuleConfiguration(null, null, null));
}
@Test
public void assertSwapToYamlConfigurationWithMaxProperties() {
YamlConsensusReplicationActualTableRuleConfiguration yamlConfig = swapper.swapToYamlConfiguration(
- new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName));
- assertThat(yamlConfig.getDataSourceName(), is(dataSourceName));
+ new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId,
+ Collections.singletonList(new ConsensusReplicationNodeRuleConfiguration(replicaPeer, dataSourceName))));
assertThat(yamlConfig.getPhysicsTable(), is(physicsTable));
assertThat(yamlConfig.getReplicaGroupId(), is(replicaGroupId));
- assertThat(yamlConfig.getReplicaPeers(), is(replicaPeers));
+ assertNotNull(yamlConfig.getReplicaNodes());
+ assertThat(yamlConfig.getReplicaNodes().size(), is(1));
+ YamlConsensusReplicationNodeRuleConfiguration resultReplicaNode = yamlConfig.getReplicaNodes().iterator().next();
+ assertThat(resultReplicaNode.getReplicaPeer(), is(replicaPeer));
+ assertThat(resultReplicaNode.getDataSourceName(), is(dataSourceName));
}
@Test(expected = IllegalArgumentException.class)
public void assertSwapToObjectWithMinProperties() {
- new ConsensusReplicationActualTableRuleConfiguration(null, null, null, null);
+ new ConsensusReplicationActualTableRuleConfiguration(null, null, null);
}
@Test
@@ -61,12 +70,17 @@ public class ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest {
YamlConsensusReplicationActualTableRuleConfiguration yamlConfig = new YamlConsensusReplicationActualTableRuleConfiguration();
yamlConfig.setPhysicsTable(physicsTable);
yamlConfig.setReplicaGroupId(replicaGroupId);
- yamlConfig.setReplicaPeers(replicaPeers);
- yamlConfig.setDataSourceName(dataSourceName);
+ YamlConsensusReplicationNodeRuleConfiguration replicaNode = new YamlConsensusReplicationNodeRuleConfiguration();
+ replicaNode.setReplicaPeer(replicaPeer);
+ replicaNode.setDataSourceName(dataSourceName);
+ yamlConfig.setReplicaNodes(Collections.singletonList(replicaNode));
ConsensusReplicationActualTableRuleConfiguration config = swapper.swapToObject(yamlConfig);
- assertThat(config.getDataSourceName(), is(dataSourceName));
assertThat(config.getPhysicsTable(), is(physicsTable));
assertThat(config.getReplicaGroupId(), is(replicaGroupId));
- assertThat(config.getReplicaPeers(), is(replicaPeers));
+ assertNotNull(config.getReplicaNodes());
+ assertThat(config.getReplicaNodes().size(), is(1));
+ ConsensusReplicationNodeRuleConfiguration resultReplicaNode = config.getReplicaNodes().iterator().next();
+ assertThat(resultReplicaNode.getReplicaPeer(), is(replicaPeer));
+ assertThat(resultReplicaNode.getDataSourceName(), is(dataSourceName));
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationNodeRuleConfigurationYamlSwap [...]
similarity index 52%
copy from shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java
copy to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationNodeRuleConfigurationYamlSwapperTest.java
index f148704..b4ea4f2 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationNodeRuleConfigurationYamlSwapperTest.java
@@ -17,56 +17,49 @@
package org.apache.shardingsphere.replication.consensus.yaml.swapper;
-import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
-import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationNodeRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationNodeRuleConfiguration;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
-public class ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest {
+public class ConsensusReplicationNodeRuleConfigurationYamlSwapperTest {
- private final ConsensusReplicationActualTableRuleConfigurationYamlSwapper swapper = new ConsensusReplicationActualTableRuleConfigurationYamlSwapper();
+ private final ConsensusReplicationNodeRuleConfigurationYamlSwapper swapper = new ConsensusReplicationNodeRuleConfigurationYamlSwapper();
private final String dataSourceName = "demo_ds_0";
- private final String physicsTable = "t_order_1";
-
- private final String replicaGroupId = "raftGroupTest1";
-
- private final String replicaPeers = "127.0.0.1:9090";
+ private final String replicaPeer = "127.0.0.1:9090";
@Test(expected = IllegalArgumentException.class)
public void assertSwapToYamlConfigurationWithMinProperties() {
- swapper.swapToYamlConfiguration(new ConsensusReplicationActualTableRuleConfiguration(null, null, null, null));
+ swapper.swapToYamlConfiguration(new ConsensusReplicationNodeRuleConfiguration(null, null));
}
@Test
public void assertSwapToYamlConfigurationWithMaxProperties() {
- YamlConsensusReplicationActualTableRuleConfiguration yamlConfig = swapper.swapToYamlConfiguration(
- new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName));
+ YamlConsensusReplicationNodeRuleConfiguration yamlConfig = swapper.swapToYamlConfiguration(
+ new ConsensusReplicationNodeRuleConfiguration(replicaPeer, dataSourceName));
+ assertNotNull(yamlConfig);
+ assertThat(yamlConfig.getReplicaPeer(), is(replicaPeer));
assertThat(yamlConfig.getDataSourceName(), is(dataSourceName));
- assertThat(yamlConfig.getPhysicsTable(), is(physicsTable));
- assertThat(yamlConfig.getReplicaGroupId(), is(replicaGroupId));
- assertThat(yamlConfig.getReplicaPeers(), is(replicaPeers));
}
@Test(expected = IllegalArgumentException.class)
public void assertSwapToObjectWithMinProperties() {
- new ConsensusReplicationActualTableRuleConfiguration(null, null, null, null);
+ new ConsensusReplicationNodeRuleConfiguration(null, null);
}
@Test
public void assertSwapToObjectWithMaxProperties() {
- YamlConsensusReplicationActualTableRuleConfiguration yamlConfig = new YamlConsensusReplicationActualTableRuleConfiguration();
- yamlConfig.setPhysicsTable(physicsTable);
- yamlConfig.setReplicaGroupId(replicaGroupId);
- yamlConfig.setReplicaPeers(replicaPeers);
+ YamlConsensusReplicationNodeRuleConfiguration yamlConfig = new YamlConsensusReplicationNodeRuleConfiguration();
+ yamlConfig.setReplicaPeer(replicaPeer);
yamlConfig.setDataSourceName(dataSourceName);
- ConsensusReplicationActualTableRuleConfiguration config = swapper.swapToObject(yamlConfig);
+ ConsensusReplicationNodeRuleConfiguration config = swapper.swapToObject(yamlConfig);
+ assertNotNull(config);
+ assertThat(config.getReplicaPeer(), is(replicaPeer));
assertThat(config.getDataSourceName(), is(dataSourceName));
- assertThat(config.getPhysicsTable(), is(physicsTable));
- assertThat(config.getReplicaGroupId(), is(replicaGroupId));
- assertThat(config.getReplicaPeers(), is(replicaPeers));
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapperTest.java
index 016a8ef..fe8e1b2 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapperTest.java
@@ -19,9 +19,11 @@ package org.apache.shardingsphere.replication.consensus.yaml.swapper;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationNodeRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationNodeRuleConfiguration;
import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationRuleConfiguration;
import org.junit.Test;
@@ -45,7 +47,7 @@ public final class ConsensusReplicationRuleConfigurationYamlSwapperTest {
private final String replicaGroupId = "raftGroupTest1";
- private final String replicaPeers = "127.0.0.1:9090";
+ private final String replicaPeer = "127.0.0.1:9090";
@Test
public void assertSwapToYamlConfigurationWithMinProperties() {
@@ -61,7 +63,8 @@ public final class ConsensusReplicationRuleConfigurationYamlSwapperTest {
@Test
public void assertSwapToYamlConfigurationWithMaxProperties() {
- ConsensusReplicationActualTableRuleConfiguration replicaGroup = new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName);
+ ConsensusReplicationActualTableRuleConfiguration replicaGroup = new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId,
+ Collections.singletonList(new ConsensusReplicationNodeRuleConfiguration(replicaPeer, dataSourceName)));
Collection<ConsensusReplicationActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
ConsensusReplicationLogicTableRuleConfiguration table = new ConsensusReplicationLogicTableRuleConfiguration(logicTableName, replicaGroups);
YamlConsensusReplicationRuleConfiguration yamlConfig = swapper.swapToYamlConfiguration(new ConsensusReplicationRuleConfiguration(Collections.singleton(table)));
@@ -72,10 +75,14 @@ public final class ConsensusReplicationRuleConfigurationYamlSwapperTest {
assertNotNull(resultReplicaGroups);
assertThat(resultReplicaGroups.size(), is(1));
YamlConsensusReplicationActualTableRuleConfiguration resultReplicaGroup = resultReplicaGroups.iterator().next();
- assertThat(resultReplicaGroup.getDataSourceName(), is(dataSourceName));
assertThat(resultReplicaGroup.getPhysicsTable(), is(physicsTable));
assertThat(resultReplicaGroup.getReplicaGroupId(), is(replicaGroupId));
- assertThat(resultReplicaGroup.getReplicaPeers(), is(replicaPeers));
+ Collection<YamlConsensusReplicationNodeRuleConfiguration> resultReplicaNodes = resultReplicaGroup.getReplicaNodes();
+ assertNotNull(resultReplicaNodes);
+ assertThat(resultReplicaNodes.size(), is(1));
+ YamlConsensusReplicationNodeRuleConfiguration resultReplicaNode = resultReplicaNodes.iterator().next();
+ assertThat(resultReplicaNode.getReplicaPeer(), is(replicaPeer));
+ assertThat(resultReplicaNode.getDataSourceName(), is(dataSourceName));
}
@Test
@@ -98,8 +105,10 @@ public final class ConsensusReplicationRuleConfigurationYamlSwapperTest {
YamlConsensusReplicationActualTableRuleConfiguration replicaGroup = new YamlConsensusReplicationActualTableRuleConfiguration();
replicaGroup.setPhysicsTable(physicsTable);
replicaGroup.setReplicaGroupId(replicaGroupId);
- replicaGroup.setReplicaPeers(replicaPeers);
- replicaGroup.setDataSourceName(dataSourceName);
+ YamlConsensusReplicationNodeRuleConfiguration replicaNode = new YamlConsensusReplicationNodeRuleConfiguration();
+ replicaNode.setReplicaPeer(replicaPeer);
+ replicaNode.setDataSourceName(dataSourceName);
+ replicaGroup.setReplicaNodes(Collections.singletonList(replicaNode));
Collection<YamlConsensusReplicationActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
YamlConsensusReplicationLogicTableRuleConfiguration table = new YamlConsensusReplicationLogicTableRuleConfiguration();
table.setLogicTable(logicTableName);
@@ -114,9 +123,13 @@ public final class ConsensusReplicationRuleConfigurationYamlSwapperTest {
assertNotNull(resultReplicaGroups);
assertThat(resultReplicaGroups.size(), is(1));
ConsensusReplicationActualTableRuleConfiguration resultReplicaGroup = resultReplicaGroups.iterator().next();
- assertThat(resultReplicaGroup.getDataSourceName(), is(dataSourceName));
assertThat(resultReplicaGroup.getPhysicsTable(), is(physicsTable));
assertThat(resultReplicaGroup.getReplicaGroupId(), is(replicaGroupId));
- assertThat(resultReplicaGroup.getReplicaPeers(), is(replicaPeers));
+ Collection<ConsensusReplicationNodeRuleConfiguration> resultReplicaNodes = resultReplicaGroup.getReplicaNodes();
+ assertNotNull(resultReplicaNodes);
+ assertThat(resultReplicaNodes.size(), is(1));
+ ConsensusReplicationNodeRuleConfiguration resultReplicaNode = resultReplicaNodes.iterator().next();
+ assertThat(resultReplicaNode.getReplicaPeer(), is(replicaPeer));
+ assertThat(resultReplicaNode.getDataSourceName(), is(dataSourceName));
}
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
index 72611e7..66fe687 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
@@ -21,6 +21,8 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.shardingsphere.infra.route.context.RawGroup;
+import java.util.Collection;
+
/**
* Consensus replication group.
*/
@@ -34,7 +36,5 @@ public final class ConsensusReplicationGroup implements RawGroup {
private final String replicaGroupId;
- private final String replicaPeers;
-
- private final String dataSourceName;
+ private final Collection<ConsensusReplicationGroupNode> replicaNodeRules;
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroupNode.java
similarity index 69%
copy from shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
copy to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroupNode.java
index 72611e7..317d47f 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroupNode.java
@@ -17,24 +17,21 @@
package org.apache.shardingsphere.replication.consensus.route.engine;
-import lombok.AllArgsConstructor;
import lombok.Getter;
-import org.apache.shardingsphere.infra.route.context.RawGroup;
+import org.apache.shardingsphere.replication.consensus.rule.ConsensusReplicationNodeRule;
/**
- * Consensus replication group.
+ * Consensus replication group node.
*/
-@AllArgsConstructor
@Getter
-public final class ConsensusReplicationGroup implements RawGroup {
+public final class ConsensusReplicationGroupNode {
- public static final String BLANK_CONSENSUS_REPLICATION_GROUP_KEY = "Nil";
-
- private final String physicsTable;
-
- private final String replicaGroupId;
-
- private final String replicaPeers;
+ private final String replicaPeer;
private final String dataSourceName;
+
+ public ConsensusReplicationGroupNode(final ConsensusReplicationNodeRule replicaNodeRule) {
+ replicaPeer = replicaNodeRule.getReplicaPeer();
+ dataSourceName = replicaNodeRule.getDataSourceName();
+ }
}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationSQLRouter.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationSQLRouter.java
index 4e283b9..3ef4347 100644
--- a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationSQLRouter.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationSQLRouter.java
@@ -34,6 +34,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
+import java.util.stream.Collectors;
/**
* Consensus replication SQL router.
@@ -45,7 +46,8 @@ public final class ConsensusReplicationSQLRouter implements SQLRouter<ConsensusR
RouteContext result = new RouteContext();
ConsensusReplicationTableRule tableRule = rule.getReplicaTableRules().iterator().next();
ConsensusReplicationGroup replicaGroup = new ConsensusReplicationGroup(
- tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(), tableRule.getReplicaPeers(), tableRule.getDataSourceName());
+ tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(),
+ tableRule.getReplicaNodeRules().stream().map(ConsensusReplicationGroupNode::new).collect(Collectors.toList()));
Map<String, ConsensusReplicationGroup> replicaGroups = Collections.singletonMap(ConsensusReplicationGroup.BLANK_CONSENSUS_REPLICATION_GROUP_KEY, replicaGroup);
boolean isReadOnly = SQLUtil.isReadOnly(logicSQL.getSqlStatementContext().getSqlStatement());
result.getRouteStageContexts().put(getTypeClass(), new ConsensusReplicationRouteStageContext(schema.getName(), replicaGroups, isReadOnly));
@@ -53,7 +55,7 @@ public final class ConsensusReplicationSQLRouter implements SQLRouter<ConsensusR
}
@Override
- public void decorateRouteContext(final RouteContext routeContext,
+ public void decorateRouteContext(final RouteContext routeContext,
final LogicSQL logicSQL, final ShardingSphereSchema schema, final ConsensusReplicationRule rule, final ConfigurationProperties props) {
Map<String, ConsensusReplicationGroup> replicaGroups = new HashMap<>();
for (RouteUnit each : routeContext.getRouteUnits()) {
@@ -61,7 +63,8 @@ public final class ConsensusReplicationSQLRouter implements SQLRouter<ConsensusR
if (null == routeMappers || routeMappers.isEmpty()) {
ConsensusReplicationTableRule tableRule = rule.getReplicaTableRules().iterator().next();
ConsensusReplicationGroup replicaGroup = new ConsensusReplicationGroup(
- tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(), tableRule.getReplicaPeers(), tableRule.getDataSourceName());
+ tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(),
+ tableRule.getReplicaNodeRules().stream().map(ConsensusReplicationGroupNode::new).collect(Collectors.toList()));
replicaGroups.put(ConsensusReplicationGroup.BLANK_CONSENSUS_REPLICATION_GROUP_KEY, replicaGroup);
} else {
routeReplicaGroups(routeMappers, rule, replicaGroups);
@@ -79,12 +82,14 @@ public final class ConsensusReplicationSQLRouter implements SQLRouter<ConsensusR
if (tableRuleOptional.isPresent()) {
ConsensusReplicationTableRule tableRule = tableRuleOptional.get();
replicaGroup = new ConsensusReplicationGroup(
- tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(), tableRule.getReplicaPeers(), tableRule.getDataSourceName());
+ tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(),
+ tableRule.getReplicaNodeRules().stream().map(ConsensusReplicationGroupNode::new).collect(Collectors.toList()));
replicaGroups.put(actualTableName, replicaGroup);
} else {
ConsensusReplicationTableRule tableRule = rule.getReplicaTableRules().iterator().next();
replicaGroup = new ConsensusReplicationGroup(
- tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(), tableRule.getReplicaPeers(), tableRule.getDataSourceName());
+ tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(),
+ tableRule.getReplicaNodeRules().stream().map(ConsensusReplicationGroupNode::new).collect(Collectors.toList()));
}
replicaGroups.put(actualTableName, replicaGroup);
}