This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 1c73589 [JAV-585]Loadbalance rule dynamic configuration is not work
at some time (#454)
1c73589 is described below
commit 1c735894a4a2f06faa2268bd7002f0a0dfc7a708
Author: laijianbin <[email protected]>
AuthorDate: Fri Dec 22 18:49:18 2017 +0800
[JAV-585]Loadbalance rule dynamic configuration is not work at some time
(#454)
---
.../java/io/servicecomb/loadbalance/LoadbalanceHandler.java | 10 ++++++----
.../io/servicecomb/loadbalance/TestLoadbalanceHandler.java | 12 ++++++++++++
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git
a/handlers/handler-loadbalance/src/main/java/io/servicecomb/loadbalance/LoadbalanceHandler.java
b/handlers/handler-loadbalance/src/main/java/io/servicecomb/loadbalance/LoadbalanceHandler.java
index 0d6744b..61fd9ae 100644
---
a/handlers/handler-loadbalance/src/main/java/io/servicecomb/loadbalance/LoadbalanceHandler.java
+++
b/handlers/handler-loadbalance/src/main/java/io/servicecomb/loadbalance/LoadbalanceHandler.java
@@ -92,9 +92,8 @@ public class LoadbalanceHandler implements Handler {
public void handle(Invocation invocation, AsyncResponse asyncResp) throws
Exception {
String policy =
Configuration.INSTANCE.getPolicy(invocation.getMicroserviceName());
String strategy =
Configuration.INSTANCE.getRuleStrategyName(invocation.getMicroserviceName());
- boolean isRuleNotChanged = StringUtils.equals(policy,this.policy) &&
StringUtils.equals(strategy, this.strategy);
-
- if (!isRuleNotChanged){
+ boolean isRuleNotChanged = isEqual(policy, this.policy) &&
isEqual(strategy, this.strategy);
+ if (!isRuleNotChanged) {
//配置变化,需要重新生成所有的lb实例
synchronized (lock) {
loadBalancerMap.clear();
@@ -102,7 +101,6 @@ public class LoadbalanceHandler implements Handler {
}
this.policy = policy;
this.strategy = strategy;
-
LoadBalancer loadBalancer = getOrCreateLoadBalancer(invocation);
// TODO: after all old filter moved to new filter
// setInvocation method must to be removed
@@ -351,4 +349,8 @@ public class LoadbalanceHandler implements Handler {
}
}
}
+
+ public boolean isEqual(String str1, String str2) {
+ return (str1 == null ? str2 == null : str1.equals(str2));
+ }
}
diff --git
a/handlers/handler-loadbalance/src/test/java/io/servicecomb/loadbalance/TestLoadbalanceHandler.java
b/handlers/handler-loadbalance/src/test/java/io/servicecomb/loadbalance/TestLoadbalanceHandler.java
index c1f1e08..c7e2f0a 100644
---
a/handlers/handler-loadbalance/src/test/java/io/servicecomb/loadbalance/TestLoadbalanceHandler.java
+++
b/handlers/handler-loadbalance/src/test/java/io/servicecomb/loadbalance/TestLoadbalanceHandler.java
@@ -437,4 +437,16 @@ public class TestLoadbalanceHandler {
// no exception
}
+
+ @Test
+ public void testIsEqual(){
+ boolean nullResult = handler.isEqual(null, null);
+ Assert.assertEquals(true, nullResult);
+ boolean bothNotNullResult =
handler.isEqual("com.netflix.loadbalancer.RandomRule",
"com.netflix.loadbalancer.RandomRule");
+ Assert.assertEquals(true, bothNotNullResult);
+ boolean globalNotNull = handler.isEqual(null,
"com.netflix.loadbalancer.RandomRule");
+ Assert.assertEquals(false, globalNotNull);
+ boolean localNotNull =
handler.isEqual("com.netflix.loadbalancer.RandomRule", null);
+ Assert.assertEquals(false, localNotNull);
+ }
}
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].