This is an automated email from the ASF dual-hosted git repository.

panjuan 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 64b51d30936 Refactor Readwrite-splitting get enable data sources 
(#18103)
64b51d30936 is described below

commit 64b51d30936ec6d5dd52a8617fc2740b3ad658c8
Author: zhaojinchao <[email protected]>
AuthorDate: Wed Jun 1 11:44:58 2022 +0800

    Refactor Readwrite-splitting get enable data sources (#18103)
    
    * Refactor Readwrite-splitting get read data sources
    
    * Fix checkstyle
---
 .../route/impl/ReadwriteSplittingDataSourceRouter.java |  2 +-
 .../rule/ReadwriteSplittingDataSourceRule.java         | 18 ++++++------------
 .../rule/ReadwriteSplittingDataSourceRuleTest.java     |  8 ++++----
 .../rule/ReadwriteSplittingRuleTest.java               |  8 ++++----
 4 files changed, 15 insertions(+), 21 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/impl/ReadwriteSplittingDataSourceRouter.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/impl/ReadwriteSplittingDataSourceRouter.java
index 2521da11bfa..ae0a78296d3 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/impl/ReadwriteSplittingDataSourceRouter.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/impl/ReadwriteSplittingDataSourceRouter.java
@@ -45,7 +45,7 @@ public final class ReadwriteSplittingDataSourceRouter {
         if (isPrimaryRoute(sqlStatementContext)) {
             return rule.getWriteDataSource();
         }
-        return rule.getLoadBalancer().getDataSource(rule.getName(), 
rule.getWriteDataSource(), rule.getReadDataSourceNames());
+        return rule.getLoadBalancer().getDataSource(rule.getName(), 
rule.getWriteDataSource(), rule.getEnabledReplicaDataSources());
     }
     
     private boolean isPrimaryRoute(final SQLStatementContext<?> 
sqlStatementContext) {
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
index 8b631893230..40e786786d4 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
@@ -25,12 +25,12 @@ import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingD
 import 
org.apache.shardingsphere.readwritesplitting.spi.ReadQueryLoadBalanceAlgorithm;
 import 
org.apache.shardingsphere.readwritesplitting.strategy.ReadwriteSplittingStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.strategy.ReadwriteSplittingStrategyFactory;
+import 
org.apache.shardingsphere.readwritesplitting.strategy.type.DynamicReadwriteSplittingStrategy;
 
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * Readwrite-splitting data source rule.
@@ -63,15 +63,6 @@ public final class ReadwriteSplittingDataSourceRule {
         return readwriteSplittingStrategy.getWriteDataSource();
     }
     
-    /**
-     * Get read data source names.
-     *
-     * @return available read data source names
-     */
-    public List<String> getReadDataSourceNames() {
-        return 
readwriteSplittingStrategy.getReadDataSources().stream().filter(each -> 
!disabledDataSourceNames.contains(each)).collect(Collectors.toList());
-    }
-    
     /**
      * Update disabled data source names.
      *
@@ -91,8 +82,11 @@ public final class ReadwriteSplittingDataSourceRule {
      *
      * @return enabled replica data sources
      */
-    public Collection<String> getEnabledReplicaDataSources() {
-        Collection<String> result = 
readwriteSplittingStrategy.getReadDataSources();
+    public List<String> getEnabledReplicaDataSources() {
+        List<String> result = readwriteSplittingStrategy.getReadDataSources();
+        if (readwriteSplittingStrategy instanceof 
DynamicReadwriteSplittingStrategy) {
+            return result;
+        }
         if (!disabledDataSourceNames.isEmpty()) {
             result = new LinkedList<>(result);
             result.removeIf(disabledDataSourceNames::contains);
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
index b203e05c893..484771b1e85 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
@@ -58,26 +58,26 @@ public final class ReadwriteSplittingDataSourceRuleTest {
     
     @Test
     public void assertGetReadDataSourceNamesWithoutDisabledDataSourceNames() {
-        assertThat(readwriteSplittingDataSourceRule.getReadDataSourceNames(), 
is(Arrays.asList("read_ds_0", "read_ds_1")));
+        
assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), 
is(Arrays.asList("read_ds_0", "read_ds_1")));
     }
     
     @Test
     public void assertGetReadDataSourceNamesWithDisabledDataSourceNames() {
         
readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", 
true);
-        assertThat(readwriteSplittingDataSourceRule.getReadDataSourceNames(), 
is(Collections.singletonList("read_ds_1")));
+        
assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), 
is(Collections.singletonList("read_ds_1")));
     }
     
     @Test
     public void assertUpdateDisabledDataSourceNamesForDisabled() {
         
readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", 
true);
-        assertThat(readwriteSplittingDataSourceRule.getReadDataSourceNames(), 
is(Collections.singletonList("read_ds_1")));
+        
assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), 
is(Collections.singletonList("read_ds_1")));
     }
     
     @Test
     public void assertUpdateDisabledDataSourceNamesForEnabled() {
         
readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", 
true);
         
readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", 
false);
-        assertThat(readwriteSplittingDataSourceRule.getReadDataSourceNames(), 
is(Arrays.asList("read_ds_0", "read_ds_1")));
+        
assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), 
is(Arrays.asList("read_ds_0", "read_ds_1")));
     }
     
     @Test
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
index e8c7d18472a..7a8608c0879 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
@@ -79,23 +79,23 @@ public final class ReadwriteSplittingRuleTest {
     public void assertUpdateRuleStatusWithNotExistDataSource() {
         ReadwriteSplittingRule readwriteSplittingRule = 
createReadwriteSplittingRule();
         readwriteSplittingRule.updateStatus(new 
DataSourceNameDisabledEvent(new 
QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds"), true));
-        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getReadDataSourceNames(),
 is(Arrays.asList("read_ds_0", "read_ds_1")));
+        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(),
 is(Arrays.asList("read_ds_0", "read_ds_1")));
     }
     
     @Test
     public void assertUpdateRuleStatus() {
         ReadwriteSplittingRule readwriteSplittingRule = 
createReadwriteSplittingRule();
         readwriteSplittingRule.updateStatus(new 
DataSourceNameDisabledEvent(new 
QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds_0"), true));
-        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getReadDataSourceNames(),
 is(Collections.singletonList("read_ds_1")));
+        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(),
 is(Collections.singletonList("read_ds_1")));
     }
     
     @Test
     public void assertUpdateRuleStatusWithEnable() {
         ReadwriteSplittingRule readwriteSplittingRule = 
createReadwriteSplittingRule();
         readwriteSplittingRule.updateStatus(new 
DataSourceNameDisabledEvent(new 
QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds_0"), true));
-        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getReadDataSourceNames(),
 is(Collections.singletonList("read_ds_1")));
+        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(),
 is(Collections.singletonList("read_ds_1")));
         readwriteSplittingRule.updateStatus(new 
DataSourceNameDisabledEvent(new 
QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds_0"), false));
-        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getReadDataSourceNames(),
 is(Arrays.asList("read_ds_0", "read_ds_1")));
+        
assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(),
 is(Arrays.asList("read_ds_0", "read_ds_1")));
     }
     
     @Test

Reply via email to