This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 633b62027e5 Refactor ReadwriteSplittingRuleConfigurationChecker
(#30490)
633b62027e5 is described below
commit 633b62027e5cad8460da0b18d2b93efe695f3071
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Mar 14 23:22:36 2024 +0800
Refactor ReadwriteSplittingRuleConfigurationChecker (#30490)
* Refactor ReadwriteSplittingRuleConfigurationChecker
* Refactor ReadwriteSplittingRuleConfigurationChecker
* Revise javadoc
---
.../ReadwriteSplittingRuleConfigurationChecker.java | 18 ++++++++++--------
.../load/balancer/core/LoadBalanceAlgorithm.java | 2 +-
2 files changed, 11 insertions(+), 9 deletions(-)
diff --git
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
index 127c8e91812..c6c1ee5cffa 100644
---
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
+++
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
@@ -54,7 +54,7 @@ public final class ReadwriteSplittingRuleConfigurationChecker
implements RuleCon
public void check(final String databaseName, final
ReadwriteSplittingRuleConfiguration config, final Map<String, DataSource>
dataSourceMap, final Collection<ShardingSphereRule> builtRules) {
Collection<ReadwriteSplittingDataSourceRuleConfiguration> configs =
config.getDataSources();
checkDataSources(databaseName, configs, dataSourceMap, builtRules);
- checkLoadBalancerDataSourceName(databaseName, configs,
getLoadBalancer(config));
+ checkLoadBalancer(databaseName, configs, getLoadBalancer(config));
}
private void checkDataSources(final String databaseName, final
Collection<ReadwriteSplittingDataSourceRuleConfiguration> configs,
@@ -108,8 +108,7 @@ public final class
ReadwriteSplittingRuleConfigurationChecker implements RuleCon
}
}
- private void checkLoadBalancerDataSourceName(final String databaseName,
final Collection<ReadwriteSplittingDataSourceRuleConfiguration> configs,
- final Map<String,
LoadBalanceAlgorithm> loadBalancers) {
+ private void checkLoadBalancer(final String databaseName, final
Collection<ReadwriteSplittingDataSourceRuleConfiguration> configs, final
Map<String, LoadBalanceAlgorithm> loadBalancers) {
for (ReadwriteSplittingDataSourceRuleConfiguration each : configs) {
if (Strings.isNullOrEmpty(each.getLoadBalancerName())) {
continue;
@@ -117,15 +116,18 @@ public final class
ReadwriteSplittingRuleConfigurationChecker implements RuleCon
LoadBalanceAlgorithm loadBalancer =
loadBalancers.get(each.getLoadBalancerName());
ShardingSpherePreconditions.checkNotNull(loadBalancer, () -> new
LoadBalancerAlgorithmNotFoundException(databaseName));
if (loadBalancer instanceof WeightLoadBalanceAlgorithm) {
-
ShardingSpherePreconditions.checkState(!((WeightLoadBalanceAlgorithm)
loadBalancer).getAvailableTargetNames().isEmpty(),
- () -> new
MissingRequiredReadDatabaseWeightException(loadBalancer.getType(),
String.format("Read data source weight config are required in database `%s`",
databaseName)));
- Collection<String> dataSourceNames =
each.getReadDataSourceNames();
- ((WeightLoadBalanceAlgorithm)
loadBalancer).getAvailableTargetNames().forEach(dataSourceName ->
ShardingSpherePreconditions.checkState(dataSourceNames.contains(dataSourceName),
- () -> new
InvalidWeightLoadBalancerConfigurationException(databaseName)));
+ checkWeightLoadBalancer(databaseName, each,
(WeightLoadBalanceAlgorithm) loadBalancer);
}
}
}
+ private void checkWeightLoadBalancer(final String databaseName, final
ReadwriteSplittingDataSourceRuleConfiguration sourceRuleConfig, final
WeightLoadBalanceAlgorithm loadBalancer) {
+
ShardingSpherePreconditions.checkState(!loadBalancer.getAvailableTargetNames().isEmpty(),
+ () -> new
MissingRequiredReadDatabaseWeightException(loadBalancer.getType(),
String.format("Read data source weight config are required in database `%s`",
databaseName)));
+ loadBalancer.getAvailableTargetNames().forEach(each ->
ShardingSpherePreconditions.checkState(sourceRuleConfig.getReadDataSourceNames().contains(each),
+ () -> new
InvalidWeightLoadBalancerConfigurationException(databaseName)));
+ }
+
private Map<String, LoadBalanceAlgorithm> getLoadBalancer(final
ReadwriteSplittingRuleConfiguration config) {
Map<String, LoadBalanceAlgorithm> result = new
LinkedHashMap<>(config.getLoadBalancers().size(), 1F);
config.getLoadBalancers().forEach((key, value) -> result.put(key,
TypedSPILoader.getService(LoadBalanceAlgorithm.class, value.getType(),
value.getProps())));
diff --git
a/infra/algorithm/load-balancer/core/src/main/java/org/apache/shardingsphere/infra/algorithm/load/balancer/core/LoadBalanceAlgorithm.java
b/infra/algorithm/load-balancer/core/src/main/java/org/apache/shardingsphere/infra/algorithm/load/balancer/core/LoadBalanceAlgorithm.java
index 02bfbc170bb..4c3f81c9167 100644
---
a/infra/algorithm/load-balancer/core/src/main/java/org/apache/shardingsphere/infra/algorithm/load/balancer/core/LoadBalanceAlgorithm.java
+++
b/infra/algorithm/load-balancer/core/src/main/java/org/apache/shardingsphere/infra/algorithm/load/balancer/core/LoadBalanceAlgorithm.java
@@ -29,7 +29,7 @@ public interface LoadBalanceAlgorithm extends
ShardingSphereAlgorithm {
/**
* Get available target name.
*
- * @param groupName group name, which uniquely identifies a set of
availableTargetNames
+ * @param groupName group name, which uniquely identifies available target
names
* @param availableTargetNames available data sources or instance id
* @return available target name
*/