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");

Reply via email to