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 33749b98a6d Refactor LoadBalanceAlgorithm (#24782)
33749b98a6d is described below

commit 33749b98a6de9c0fea46fecbda6ee89089c59cb7
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Mar 23 19:19:44 2023 +0800

    Refactor LoadBalanceAlgorithm (#24782)
---
 .../api/transaction/TransactionReadQueryStrategy.java      |  1 +
 .../loadbalance/RandomReadQueryLoadBalanceAlgorithm.java   | 12 +++++-------
 .../RoundRobinReadQueryLoadBalanceAlgorithm.java           | 14 ++++++--------
 .../loadbalance/WeightReadQueryLoadBalanceAlgorithm.java   | 11 ++++-------
 .../transaction/TransactionReadQueryStrategyUtil.java      |  5 ++++-
 5 files changed, 20 insertions(+), 23 deletions(-)

diff --git 
a/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/transaction/TransactionReadQueryStrategy.java
 
b/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/transaction/TransactionReadQueryStrategy.java
index 211dfa85681..ceb6c6cb88a 100644
--- 
a/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/transaction/TransactionReadQueryStrategy.java
+++ 
b/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/transaction/TransactionReadQueryStrategy.java
@@ -21,5 +21,6 @@ package 
org.apache.shardingsphere.readwritesplitting.api.transaction;
  * Transaction read query strategy.
  */
 public enum TransactionReadQueryStrategy {
+    
     FIXED_PRIMARY, FIXED_REPLICA, DYNAMIC_REPLICA
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RandomReadQueryLoadBalanceAlgorithm.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RandomReadQueryLoadBalanceAlgorithm.java
index 91e90283935..b0400b2d397 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RandomReadQueryLoadBalanceAlgorithm.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RandomReadQueryLoadBalanceAlgorithm.java
@@ -36,9 +36,7 @@ public final class RandomReadQueryLoadBalanceAlgorithm 
implements ReadQueryLoadB
     
     @Override
     public void init(final Properties props) {
-        transactionReadQueryStrategy = 
props.containsKey(TRANSACTION_READ_QUERY_STRATEGY)
-                ? 
TransactionReadQueryStrategy.valueOf(props.getProperty(TRANSACTION_READ_QUERY_STRATEGY))
-                : TransactionReadQueryStrategy.FIXED_PRIMARY;
+        transactionReadQueryStrategy = 
TransactionReadQueryStrategy.valueOf(props.getProperty(TRANSACTION_READ_QUERY_STRATEGY,
 TransactionReadQueryStrategy.FIXED_PRIMARY.name()));
     }
     
     @Override
@@ -50,12 +48,12 @@ public final class RandomReadQueryLoadBalanceAlgorithm 
implements ReadQueryLoadB
     }
     
     @Override
-    public String getType() {
-        return "RANDOM";
+    public String getDataSourceName(final String name, final List<String> 
readDataSourceNames) {
+        return 
readDataSourceNames.get(ThreadLocalRandom.current().nextInt(readDataSourceNames.size()));
     }
     
     @Override
-    public String getDataSourceName(final String name, final List<String> 
readDataSourceNames) {
-        return 
readDataSourceNames.get(ThreadLocalRandom.current().nextInt(readDataSourceNames.size()));
+    public String getType() {
+        return "RANDOM";
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RoundRobinReadQueryLoadBalanceAlgorithm.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RoundRobinReadQueryLoadBalanceAlgorithm.java
index 04bf63fb1ff..987b26ecd67 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RoundRobinReadQueryLoadBalanceAlgorithm.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/RoundRobinReadQueryLoadBalanceAlgorithm.java
@@ -38,9 +38,7 @@ public final class RoundRobinReadQueryLoadBalanceAlgorithm 
implements ReadQueryL
     
     @Override
     public void init(final Properties props) {
-        transactionReadQueryStrategy = 
props.containsKey(TRANSACTION_READ_QUERY_STRATEGY)
-                ? 
TransactionReadQueryStrategy.valueOf(props.getProperty(TRANSACTION_READ_QUERY_STRATEGY))
-                : TransactionReadQueryStrategy.FIXED_PRIMARY;
+        transactionReadQueryStrategy = 
TransactionReadQueryStrategy.valueOf(props.getProperty(TRANSACTION_READ_QUERY_STRATEGY,
 TransactionReadQueryStrategy.FIXED_PRIMARY.name()));
     }
     
     @Override
@@ -51,6 +49,11 @@ public final class RoundRobinReadQueryLoadBalanceAlgorithm 
implements ReadQueryL
         return getDataSourceName(name, readDataSourceNames);
     }
     
+    @Override
+    public String getDataSourceName(final String name, final List<String> 
readDataSourceNames) {
+        return readDataSourceNames.get(Math.abs(count.getAndIncrement()) % 
readDataSourceNames.size());
+    }
+    
     @Override
     public String getType() {
         return "ROUND_ROBIN";
@@ -60,9 +63,4 @@ public final class RoundRobinReadQueryLoadBalanceAlgorithm 
implements ReadQueryL
     public boolean isDefault() {
         return true;
     }
-    
-    @Override
-    public String getDataSourceName(final String name, final List<String> 
readDataSourceNames) {
-        return readDataSourceNames.get(Math.abs(count.getAndIncrement()) % 
readDataSourceNames.size());
-    }
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReadQueryLoadBalanceAlgorithm.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReadQueryLoadBalanceAlgorithm.java
index 5e3f2eefa77..92d2fb82fb9 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReadQueryLoadBalanceAlgorithm.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReadQueryLoadBalanceAlgorithm.java
@@ -56,13 +56,10 @@ public final class WeightReadQueryLoadBalanceAlgorithm 
implements ReadQueryLoadB
     @Override
     public void init(final Properties props) {
         this.props = props;
-        if (props.containsKey(TRANSACTION_READ_QUERY_STRATEGY)) {
-            transactionReadQueryStrategy = 
TransactionReadQueryStrategy.valueOf(props.getProperty(TRANSACTION_READ_QUERY_STRATEGY));
-            dataSourceNames = props.stringPropertyNames().stream().filter(each 
-> !each.equals(TRANSACTION_READ_QUERY_STRATEGY)).collect(Collectors.toList());
-        } else {
-            transactionReadQueryStrategy = 
TransactionReadQueryStrategy.FIXED_PRIMARY;
-            dataSourceNames = props.stringPropertyNames();
-        }
+        transactionReadQueryStrategy = 
TransactionReadQueryStrategy.valueOf(props.getProperty(TRANSACTION_READ_QUERY_STRATEGY,
 TransactionReadQueryStrategy.FIXED_PRIMARY.name()));
+        dataSourceNames = props.containsKey(TRANSACTION_READ_QUERY_STRATEGY)
+                ? props.stringPropertyNames().stream().filter(each -> 
!each.equals(TRANSACTION_READ_QUERY_STRATEGY)).collect(Collectors.toList())
+                : props.stringPropertyNames();
     }
     
     @Override
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/transaction/TransactionReadQueryStrategyUtil.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/transaction/TransactionReadQueryStrategyUtil.java
index 61857fefbd4..3b9c9ee09b9 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/transaction/TransactionReadQueryStrategyUtil.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/transaction/TransactionReadQueryStrategyUtil.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.readwritesplitting.transaction;
 
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.infra.context.transaction.TransactionConnectionContext;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionReadQueryStrategyAware;
@@ -26,7 +28,8 @@ import java.util.List;
 /**
  * Transaction read query strategy util.
  */
-public class TransactionReadQueryStrategyUtil {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class TransactionReadQueryStrategyUtil {
     
     /**
      * Get data source name in transaction.

Reply via email to