This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 8acf812b854 Fix drop readwrite_splitting rule fails when
`LoadBalancerName` is null (#18098)
8acf812b854 is described below
commit 8acf812b854384a46db39779a611457afa3e8ee9
Author: lanchengx <[email protected]>
AuthorDate: Tue May 31 18:05:14 2022 +0800
Fix drop readwrite_splitting rule fails when `LoadBalancerName` is null
(#18098)
* Fix delete rule fails when `LoadBalancer` is null
* Fix delete rule fails when `LoadBalancer` is null
---
.../update/DropReadwriteSplittingRuleStatementUpdater.java | 2 +-
.../DropReadwriteSplittingRuleStatementUpdaterTest.java | 13 +++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdater.java
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/re
[...]
index 85892655a9b..eb1a5ac784c 100644
---
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdater.java
+++
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdater.java
@@ -88,7 +88,7 @@ public final class DropReadwriteSplittingRuleStatementUpdater
implements RuleDef
Optional<ReadwriteSplittingDataSourceRuleConfiguration>
dataSourceRuleConfig = currentRuleConfig.getDataSources().stream().filter(each
-> ruleName.equals(each.getName())).findAny();
dataSourceRuleConfig.ifPresent(optional -> {
currentRuleConfig.getDataSources().remove(optional);
- if (isLoadBalancerNotInUse(currentRuleConfig,
optional.getLoadBalancerName())) {
+ if (null != optional.getLoadBalancerName() &&
isLoadBalancerNotInUse(currentRuleConfig, optional.getLoadBalancerName())) {
currentRuleConfig.getLoadBalancers().remove(optional.getLoadBalancerName());
}
});
diff --git
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingspher
[...]
index 3e8bc39fa38..56a7c384b22 100644
---
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleStatementUpdaterTest.java
@@ -92,6 +92,13 @@ public final class
DropReadwriteSplittingRuleStatementUpdaterTest {
assertThat(ruleConfig.getLoadBalancers().size(), is(1));
}
+ @Test
+ public void assertUpdateCurrentRuleConfigurationWithoutLoadBalancerName() {
+ ReadwriteSplittingRuleConfiguration ruleConfig =
createCurrentRuleConfigurationWithoutLoadBalancerName();
+
assertTrue(updater.updateCurrentRuleConfiguration(createSQLStatement(),
ruleConfig));
+ assertThat(ruleConfig.getLoadBalancers().size(), is(1));
+ }
+
private DropReadwriteSplittingRuleStatement createSQLStatement() {
return new
DropReadwriteSplittingRuleStatement(Collections.singleton("readwrite_ds"));
}
@@ -102,6 +109,12 @@ public final class
DropReadwriteSplittingRuleStatementUpdaterTest {
return new ReadwriteSplittingRuleConfiguration(new
LinkedList<>(Collections.singleton(dataSourceRuleConfig)), loadBalancers);
}
+ private ReadwriteSplittingRuleConfiguration
createCurrentRuleConfigurationWithoutLoadBalancerName() {
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "Static", new
Properties(), null);
+ Map<String, ShardingSphereAlgorithmConfiguration> loadBalancers =
Collections.singletonMap("readwrite_ds", new
ShardingSphereAlgorithmConfiguration("TEST", new Properties()));
+ return new ReadwriteSplittingRuleConfiguration(new
LinkedList<>(Collections.singleton(dataSourceRuleConfig)), loadBalancers);
+ }
+
private ReadwriteSplittingRuleConfiguration
createMultipleCurrentRuleConfigurations() {
ReadwriteSplittingDataSourceRuleConfiguration fooDataSourceRuleConfig
= new ReadwriteSplittingDataSourceRuleConfiguration("foo_ds", "Static", new
Properties(), "TEST");
ReadwriteSplittingDataSourceRuleConfiguration barDataSourceRuleConfig
= new ReadwriteSplittingDataSourceRuleConfiguration("bar_ds", "Static", new
Properties(), "TEST");