terrymanu commented on code in PR #19808:
URL: https://github.com/apache/shardingsphere/pull/19808#discussion_r936645705
##########
shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java:
##########
@@ -75,12 +78,42 @@ public ReadwriteSplittingRule(final
AlgorithmProvidedReadwriteSplittingRuleConfi
loadBalancers.putAll(ruleConfig.getLoadBalanceAlgorithms());
dataSourceRules = new HashMap<>(ruleConfig.getDataSources().size(), 1);
for (ReadwriteSplittingDataSourceRuleConfiguration each :
ruleConfig.getDataSources()) {
- ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(each.getLoadBalancerName()) ?
ReadQueryLoadBalanceAlgorithmFactory.newInstance()
- : loadBalancers.get(each.getLoadBalancerName());
- dataSourceRules.put(each.getName(), new
ReadwriteSplittingDataSourceRule(each, loadBalanceAlgorithm, builtRules));
+
dataSourceRules.putAll(buildReadwriteSplittingDataSourceRules(each,
builtRules));
}
}
+ private Map<String, ReadwriteSplittingDataSourceRule>
buildReadwriteSplittingDataSourceRules(final
ReadwriteSplittingDataSourceRuleConfiguration config,
+
final Collection<ShardingSphereRule> builtRules) {
+ Map<String, ReadwriteSplittingDataSourceRule> result = new
LinkedHashMap<>();
+ ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(config.getLoadBalancerName())
+ ? ReadQueryLoadBalanceAlgorithmFactory.newInstance()
+ : loadBalancers.get(config.getLoadBalancerName());
+ List<String> inlineNames = new
InlineExpressionParser(config.getName()).splitAndEvaluate();
+ if (null != config.getStaticStrategy()) {
+ List<String> writeInlineNames = new
InlineExpressionParser(config.getStaticStrategy().getWriteDataSourceName()).splitAndEvaluate();
Review Comment:
How about change `writeInlineNames` to `writeInlineDataSourceNames`?
##########
shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java:
##########
@@ -75,12 +78,42 @@ public ReadwriteSplittingRule(final
AlgorithmProvidedReadwriteSplittingRuleConfi
loadBalancers.putAll(ruleConfig.getLoadBalanceAlgorithms());
dataSourceRules = new HashMap<>(ruleConfig.getDataSources().size(), 1);
for (ReadwriteSplittingDataSourceRuleConfiguration each :
ruleConfig.getDataSources()) {
- ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(each.getLoadBalancerName()) ?
ReadQueryLoadBalanceAlgorithmFactory.newInstance()
- : loadBalancers.get(each.getLoadBalancerName());
- dataSourceRules.put(each.getName(), new
ReadwriteSplittingDataSourceRule(each, loadBalanceAlgorithm, builtRules));
+
dataSourceRules.putAll(buildReadwriteSplittingDataSourceRules(each,
builtRules));
}
}
+ private Map<String, ReadwriteSplittingDataSourceRule>
buildReadwriteSplittingDataSourceRules(final
ReadwriteSplittingDataSourceRuleConfiguration config,
+
final Collection<ShardingSphereRule> builtRules) {
+ Map<String, ReadwriteSplittingDataSourceRule> result = new
LinkedHashMap<>();
+ ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(config.getLoadBalancerName())
+ ? ReadQueryLoadBalanceAlgorithmFactory.newInstance()
+ : loadBalancers.get(config.getLoadBalancerName());
+ List<String> inlineNames = new
InlineExpressionParser(config.getName()).splitAndEvaluate();
+ if (null != config.getStaticStrategy()) {
+ List<String> writeInlineNames = new
InlineExpressionParser(config.getStaticStrategy().getWriteDataSourceName()).splitAndEvaluate();
+ List<List<String>> readInlineNames =
config.getStaticStrategy().getReadDataSourceNames().stream().map(e -> new
InlineExpressionParser(e).splitAndEvaluate()).collect(Collectors.toList());
Review Comment:
How about change `readInlineNames` to `readInlineDataSourceNames`?
##########
shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java:
##########
@@ -75,12 +78,42 @@ public ReadwriteSplittingRule(final
AlgorithmProvidedReadwriteSplittingRuleConfi
loadBalancers.putAll(ruleConfig.getLoadBalanceAlgorithms());
dataSourceRules = new HashMap<>(ruleConfig.getDataSources().size(), 1);
for (ReadwriteSplittingDataSourceRuleConfiguration each :
ruleConfig.getDataSources()) {
- ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(each.getLoadBalancerName()) ?
ReadQueryLoadBalanceAlgorithmFactory.newInstance()
- : loadBalancers.get(each.getLoadBalancerName());
- dataSourceRules.put(each.getName(), new
ReadwriteSplittingDataSourceRule(each, loadBalanceAlgorithm, builtRules));
+
dataSourceRules.putAll(buildReadwriteSplittingDataSourceRules(each,
builtRules));
}
}
+ private Map<String, ReadwriteSplittingDataSourceRule>
buildReadwriteSplittingDataSourceRules(final
ReadwriteSplittingDataSourceRuleConfiguration config,
+
final Collection<ShardingSphereRule> builtRules) {
+ Map<String, ReadwriteSplittingDataSourceRule> result = new
LinkedHashMap<>();
+ ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(config.getLoadBalancerName())
+ ? ReadQueryLoadBalanceAlgorithmFactory.newInstance()
+ : loadBalancers.get(config.getLoadBalancerName());
+ List<String> inlineNames = new
InlineExpressionParser(config.getName()).splitAndEvaluate();
+ if (null != config.getStaticStrategy()) {
+ List<String> writeInlineNames = new
InlineExpressionParser(config.getStaticStrategy().getWriteDataSourceName()).splitAndEvaluate();
+ List<List<String>> readInlineNames =
config.getStaticStrategy().getReadDataSourceNames().stream().map(e -> new
InlineExpressionParser(e).splitAndEvaluate()).collect(Collectors.toList());
Review Comment:
Please change `e` to `each`
##########
shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java:
##########
@@ -75,12 +78,42 @@ public ReadwriteSplittingRule(final
AlgorithmProvidedReadwriteSplittingRuleConfi
loadBalancers.putAll(ruleConfig.getLoadBalanceAlgorithms());
dataSourceRules = new HashMap<>(ruleConfig.getDataSources().size(), 1);
for (ReadwriteSplittingDataSourceRuleConfiguration each :
ruleConfig.getDataSources()) {
- ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(each.getLoadBalancerName()) ?
ReadQueryLoadBalanceAlgorithmFactory.newInstance()
- : loadBalancers.get(each.getLoadBalancerName());
- dataSourceRules.put(each.getName(), new
ReadwriteSplittingDataSourceRule(each, loadBalanceAlgorithm, builtRules));
+
dataSourceRules.putAll(buildReadwriteSplittingDataSourceRules(each,
builtRules));
}
}
+ private Map<String, ReadwriteSplittingDataSourceRule>
buildReadwriteSplittingDataSourceRules(final
ReadwriteSplittingDataSourceRuleConfiguration config,
+
final Collection<ShardingSphereRule> builtRules) {
+ Map<String, ReadwriteSplittingDataSourceRule> result = new
LinkedHashMap<>();
+ ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(config.getLoadBalancerName())
+ ? ReadQueryLoadBalanceAlgorithmFactory.newInstance()
+ : loadBalancers.get(config.getLoadBalancerName());
+ List<String> inlineNames = new
InlineExpressionParser(config.getName()).splitAndEvaluate();
+ if (null != config.getStaticStrategy()) {
+ List<String> writeInlineNames = new
InlineExpressionParser(config.getStaticStrategy().getWriteDataSourceName()).splitAndEvaluate();
+ List<List<String>> readInlineNames =
config.getStaticStrategy().getReadDataSourceNames().stream().map(e -> new
InlineExpressionParser(e).splitAndEvaluate()).collect(Collectors.toList());
+ Preconditions.checkArgument(writeInlineNames.size() ==
inlineNames.size(), "Inline expression write data source names size error");
+ readInlineNames.forEach(e -> Preconditions.checkArgument(e.size()
== inlineNames.size(), "Inline expression read data source names size error"));
+ for (int i = 0; i < inlineNames.size(); i++) {
+ final int finalI = i;
Review Comment:
This variable does not make sense, could you rename it?
##########
shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java:
##########
@@ -75,12 +78,42 @@ public ReadwriteSplittingRule(final
AlgorithmProvidedReadwriteSplittingRuleConfi
loadBalancers.putAll(ruleConfig.getLoadBalanceAlgorithms());
dataSourceRules = new HashMap<>(ruleConfig.getDataSources().size(), 1);
for (ReadwriteSplittingDataSourceRuleConfiguration each :
ruleConfig.getDataSources()) {
- ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(each.getLoadBalancerName()) ?
ReadQueryLoadBalanceAlgorithmFactory.newInstance()
- : loadBalancers.get(each.getLoadBalancerName());
- dataSourceRules.put(each.getName(), new
ReadwriteSplittingDataSourceRule(each, loadBalanceAlgorithm, builtRules));
+
dataSourceRules.putAll(buildReadwriteSplittingDataSourceRules(each,
builtRules));
}
}
+ private Map<String, ReadwriteSplittingDataSourceRule>
buildReadwriteSplittingDataSourceRules(final
ReadwriteSplittingDataSourceRuleConfiguration config,
+
final Collection<ShardingSphereRule> builtRules) {
+ Map<String, ReadwriteSplittingDataSourceRule> result = new
LinkedHashMap<>();
+ ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = null ==
loadBalancers.get(config.getLoadBalancerName())
+ ? ReadQueryLoadBalanceAlgorithmFactory.newInstance()
+ : loadBalancers.get(config.getLoadBalancerName());
+ List<String> inlineNames = new
InlineExpressionParser(config.getName()).splitAndEvaluate();
Review Comment:
How about change `inlineNames` to `inlineDataSourceNames`?
##########
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application.properties:
##########
@@ -17,10 +17,11 @@
spring.shardingsphere.database.name=foo_db
-spring.shardingsphere.datasource.names=ds${0..1}
+spring.shardingsphere.datasource.names=ds${0..1},write_ds
Review Comment:
How about rename `ds${0..1}` to `read_ds_${0..1}`?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]