You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/02/01 11:04:43 UTC

[shardingsphere] branch master updated: Refactor WeightReadQueryLoadBalanceAlgorithm (#23903)

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 26aecd7cb21 Refactor WeightReadQueryLoadBalanceAlgorithm (#23903)
26aecd7cb21 is described below

commit 26aecd7cb210148fb46cf185bf6109eb38c0ad5e
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Feb 1 19:04:33 2023 +0800

    Refactor WeightReadQueryLoadBalanceAlgorithm (#23903)
---
 .../TransactionWeightReadQueryLoadBalanceAlgorithm.java            | 7 ++++---
 .../algorithm/loadbalance/WeightReadQueryLoadBalanceAlgorithm.java | 5 +++--
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithm.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithm.java
index 071d315174a..ee7e2cbb5d4 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithm.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithm.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.readwritesplitting.spi.ReadQueryLoadBalanceAlgo
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ThreadLocalRandom;
@@ -39,7 +40,7 @@ public final class TransactionWeightReadQueryLoadBalanceAlgorithm implements Rea
     
     private static final double ACCURACY_THRESHOLD = 0.0001;
     
-    private static final ConcurrentHashMap<String, double[]> WEIGHT_MAP = new ConcurrentHashMap<>();
+    private final Map<String, double[]> weightMap = new ConcurrentHashMap<>();
     
     private Properties props;
     
@@ -50,8 +51,8 @@ public final class TransactionWeightReadQueryLoadBalanceAlgorithm implements Rea
     
     @Override
     public String getDataSource(final String name, final String writeDataSourceName, final List<String> readDataSourceNames, final TransactionConnectionContext context) {
-        double[] weight = WEIGHT_MAP.containsKey(name) ? WEIGHT_MAP.get(name) : initWeight(readDataSourceNames);
-        WEIGHT_MAP.putIfAbsent(name, weight);
+        double[] weight = weightMap.containsKey(name) ? weightMap.get(name) : initWeight(readDataSourceNames);
+        weightMap.putIfAbsent(name, weight);
         return getDataSourceName(readDataSourceNames, weight);
     }
     
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 e3add991ee2..e78531757f8 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
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.readwritesplitting.spi.ReadQueryLoadBalanceAlgo
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ThreadLocalRandom;
@@ -39,7 +40,7 @@ public final class WeightReadQueryLoadBalanceAlgorithm implements ReadQueryLoadB
     
     private static final double ACCURACY_THRESHOLD = 0.0001;
     
-    private final ConcurrentHashMap<String, double[]> weightMap = new ConcurrentHashMap<>();
+    private final Map<String, double[]> weightMap = new ConcurrentHashMap<>();
     
     private Properties props;
     
@@ -70,7 +71,7 @@ public final class WeightReadQueryLoadBalanceAlgorithm implements ReadQueryLoadB
     
     private double[] initWeight(final List<String> readDataSourceNames) {
         double[] result = getWeights(readDataSourceNames);
-        Preconditions.checkState(result.length == 0 || !(Math.abs(result[result.length - 1] - 1.0D) >= ACCURACY_THRESHOLD),
+        Preconditions.checkState(0 == result.length || !(Math.abs(result[result.length - 1] - 1.0D) >= ACCURACY_THRESHOLD),
                 "The cumulative weight is calculated incorrectly, and the sum of the probabilities is not equal to 1");
         return result;
     }