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 2022/06/14 04:45:03 UTC
[shardingsphere] branch master updated: WeightReplicaLoadBalanceAlgorithm can not be used by multiple load balance rules (#17395)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 618b57814dc WeightReplicaLoadBalanceAlgorithm can not be used by multiple load balance rules (#17395)
618b57814dc is described below
commit 618b57814dc3f2c7a27f545cf1302f3fe7530d29
Author: cherubimLV <36...@users.noreply.github.com>
AuthorDate: Tue Jun 14 12:44:56 2022 +0800
WeightReplicaLoadBalanceAlgorithm can not be used by multiple load balance rules (#17395)
* Change static field WEIGHT_MAP to class level
---
.codecov.yml | 11 +++--------
.../loadbalance/WeightReplicaLoadBalanceAlgorithm.java | 6 +++---
.../loadbalance/WeightReplicaLoadBalanceAlgorithmTest.java | 13 -------------
3 files changed, 6 insertions(+), 24 deletions(-)
diff --git a/.codecov.yml b/.codecov.yml
index 9cf0ab320d2..7f2de5ac9f1 100644
--- a/.codecov.yml
+++ b/.codecov.yml
@@ -15,11 +15,6 @@
# limitations under the License.
#
-coverage:
- status:
- # pull-requests only
- patch:
- default:
- threshold: 0.1%
-ignore:
- - "examples/.*"
+org.apache.shardingsphere.readwritesplitting.algorithm.RoundRobinReplicaLoadBalanceAlgorithm
+org.apache.shardingsphere.readwritesplitting.algorithm.RandomReplicaLoadBalanceAlgorithm
+org.apache.shardingsphere.readwritesplitting.algorithm.WeightReplicaLoadBalanceAlgorithm
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithm.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithm.java
index 9e8f8f79825..c04a7201950 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithm.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithm.java
@@ -35,7 +35,7 @@ public final class WeightReplicaLoadBalanceAlgorithm implements ReadQueryLoadBal
private static final double ACCURACY_THRESHOLD = 0.0001;
- private static final ConcurrentHashMap<String, double[]> WEIGHT_MAP = new ConcurrentHashMap<>();
+ private final ConcurrentHashMap<String, double[]> weightMap = new ConcurrentHashMap<>();
private Properties props;
@@ -49,8 +49,8 @@ public final class WeightReplicaLoadBalanceAlgorithm implements ReadQueryLoadBal
if (TransactionHolder.isTransaction()) {
return writeDataSourceName;
}
- 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/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithmTest.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithmTest.java
index d6d8094da91..43511e098b0 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithmTest.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/WeightReplicaLoadBalanceAlgorithmTest.java
@@ -20,15 +20,11 @@ package org.apache.shardingsphere.readwritesplitting.algorithm.loadbalance;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.readwritesplitting.factory.ReplicaLoadBalanceAlgorithmFactory;
import org.apache.shardingsphere.transaction.TransactionHolder;
-import org.junit.After;
-import org.junit.Before;
import org.junit.Test;
-import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
@@ -37,15 +33,6 @@ import static org.junit.Assert.assertThat;
public final class WeightReplicaLoadBalanceAlgorithmTest {
- @SuppressWarnings("rawtypes")
- @Before
- @After
- public void reset() throws NoSuchFieldException, IllegalAccessException {
- Field accuracyThresholdField = WeightReplicaLoadBalanceAlgorithm.class.getDeclaredField("WEIGHT_MAP");
- accuracyThresholdField.setAccessible(true);
- ((Map) accuracyThresholdField.get(WeightReplicaLoadBalanceAlgorithm.class)).clear();
- }
-
@Test
public void assertGetSingleReadDataSource() {
WeightReplicaLoadBalanceAlgorithm weightReplicaLoadBalanceAlgorithm = createReplicaLoadBalanceAlgorithm(createSingleDataSourceProperties());