You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2018/12/27 08:21:09 UTC

[incubator-dubbo] branch master updated: make ListenableRouter code thread safe

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 4cf3e38  make ListenableRouter code thread safe
4cf3e38 is described below

commit 4cf3e38673b23fda697b900678005b9c2cad270f
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Dec 27 16:20:48 2018 +0800

    make ListenableRouter code thread safe
---
 .../rpc/cluster/router/condition/config/AppRouterFactory.java      | 2 +-
 .../rpc/cluster/router/condition/config/ListenableRouter.java      | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java
index b55cdbf..066f865 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java
@@ -29,7 +29,7 @@ import org.apache.dubbo.rpc.cluster.RouterFactory;
 public class AppRouterFactory implements RouterFactory {
     public static final String NAME = "app";
 
-    private Router router;
+    private volatile Router router;
 
     @Override
     public Router getRouter(URL url) {
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java
index f3dedde..71c5fce 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java
@@ -124,14 +124,13 @@ public abstract class ListenableRouter extends AbstractRouter implements Configu
         }
     }
 
-    private void init(String ruleKey) {
-        Assert.notEmptyString(ruleKey, "router rule's name cannot be null");
+    private synchronized void init(String ruleKey) {
+        Assert.notEmptyString(ruleKey, "router rule's key cannot be null");
         String router = ruleKey + Constants.ROUTERS_SUFFIX;
+        configuration.addListener(router, this);
         String rule = configuration.getConfig(router);
         if (rule != null) {
             this.process(new ConfigChangeEvent(router, rule));
         }
-
-        configuration.addListener(router, this);
     }
 }