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;
}