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]>'].

Reply via email to