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 7d5693d5c98..022c89d4442 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 @@ -70,17 +70,22 @@ public Thread newThread(Runnable r) { private final Object lock = new Object(); private String policy = null; + private String strategy = null; @Override public void handle(Invocation invocation, AsyncResponse asyncResp) throws Exception { String p = Configuration.INSTANCE.getPolicy(invocation.getMicroserviceName()); - if (this.policy != null && !this.policy.equals(p)) { + String strategy = Configuration.INSTANCE.getRuleStrategyName(invocation.getMicroserviceName()); + + if (this.policy != null && !this.policy.equals(p) || + (this.strategy != null && !this.strategy.equals(strategy))) { //配置变化,需要重新生成所有的lb实例 synchronized (lock) { loadBalancerMap.clear(); } } this.policy = p; + this.strategy = strategy; String transportName = invocation.getConfigTransportName(); LoadBalancer lb = loadBalancerMap.get(transportName);