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/11/13 06:04:56 UTC

[incubator-dubbo] branch dev-metadata updated (e2f664f -> bdfc500)

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

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


    from e2f664f  record init status.
     new b787ab7  Move refresh action of configs from Spring bean to a Config API.
     new 60b1342  support accepting external configuration from application.
     new b7e8b1e  Merge branch 'dev-metadata-spring-environment' into dev-metadata
     new bdfc500  Fix NPE in TagRouter

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../dubbo/rpc/cluster/router/tag/TagRouter.java    |  2 +-
 .../apache/dubbo/config/ConfigCenterConfig.java    |  6 ++---
 .../org/apache/dubbo/config/ReferenceConfig.java   |  2 ++
 .../org/apache/dubbo/config/ServiceConfig.java     |  2 ++
 .../dubbo/config/spring/ConfigCenterBean.java      | 29 ++++++++++++++++++++--
 .../apache/dubbo/config/spring/ReferenceBean.java  |  2 --
 .../apache/dubbo/config/spring/ServiceBean.java    |  2 --
 7 files changed, 35 insertions(+), 10 deletions(-)


[incubator-dubbo] 02/04: Move refresh action of configs from Spring bean to a Config API.

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b787ab7a09ecef95100000ce206d078dec282b9e
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Nov 13 12:55:06 2018 +0800

    Move refresh action of configs from Spring bean to a Config API.
---
 .../src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java     | 4 ++--
 .../src/main/java/org/apache/dubbo/config/ReferenceConfig.java        | 2 ++
 .../src/main/java/org/apache/dubbo/config/ServiceConfig.java          | 2 ++
 .../src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java   | 2 --
 .../src/main/java/org/apache/dubbo/config/spring/ServiceBean.java     | 2 --
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
index 50b7699..82aef2a 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
@@ -80,7 +80,7 @@ public class ConfigCenterConfig extends AbstractConfig {
         return new URL(Constants.CONFIG_PROTOCOL, username, password, host, port, ConfigCenterConfig.class.getSimpleName(), map);
     }
 
-    public void init() throws Exception {
+    public void init() {
         // give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.config.priority
         refresh();
 
@@ -99,7 +99,7 @@ public class ConfigCenterConfig extends AbstractConfig {
             Environment.getInstance().updateExternalConfigurationMap(parseProperties(configContent));
             Environment.getInstance().updateAppExternalConfigurationMap(parseProperties(appConfigContent));
         } catch (IOException e) {
-            throw e;
+            throw new IllegalStateException("Failed to parse configurations from Config Center.", e);
         }
     }
 
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index 696840c..f98d8c1 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -223,6 +223,8 @@ public class ReferenceConfig<T> extends AbstractReferenceConfig {
     }
 
     public synchronized T get() {
+        checkAndUpdateSubConfigs();
+
         if (destroyed) {
             throw new IllegalStateException("Already destroyed!");
         }
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 4c20230..4d314ef 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -287,6 +287,8 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
     }
 
     public synchronized void export() {
+        checkAndUpdateSubConfigs();
+
         if (provider != null) {
             if (export == null) {
                 export = provider.getExport();
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
index 565b33f..debd366 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
@@ -181,8 +181,6 @@ public class ReferenceBean<T> extends ReferenceConfig<T> implements FactoryBean,
             }
         }
 
-        checkAndUpdateSubConfigs();
-
         Boolean b = isInit();
         if (b == null && getConsumer() != null) {
             b = getConsumer().isInit();
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
index e6bc114..06b228a 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
@@ -253,8 +253,6 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
             }
         }
 
-        checkAndUpdateSubConfigs();
-
         if (!supportedApplicationListener) {
             export();
         }


[incubator-dubbo] 03/04: Merge branch 'dev-metadata-spring-environment' into dev-metadata

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b7e8b1e02a11c4743de5ddd43550bf117ad0d34d
Merge: b787ab7 60b1342
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Nov 13 12:55:16 2018 +0800

    Merge branch 'dev-metadata-spring-environment' into dev-metadata

 .../apache/dubbo/config/ConfigCenterConfig.java    |  2 +-
 .../dubbo/config/spring/ConfigCenterBean.java      | 29 ++++++++++++++++++++--
 2 files changed, 28 insertions(+), 3 deletions(-)



[incubator-dubbo] 04/04: Fix NPE in TagRouter

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bdfc5007fa5cad80d22b5c0422e55c1fcb745dc4
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Nov 13 14:04:42 2018 +0800

    Fix NPE in TagRouter
---
 .../main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
index b88a12f..7f2ad73 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
@@ -57,7 +57,7 @@ public class TagRouter extends AbstractRouter implements Comparable<Router>, Con
     private TagRouterRule tagRouterRule;
     private String application;
 
-    private AtomicBoolean isInited;
+    private AtomicBoolean isInited = new AtomicBoolean(false);
 
     public TagRouter(URL url) {
         this(ExtensionLoader.getExtensionLoader(DynamicConfigurationFactory.class).getAdaptiveExtension().getDynamicConfiguration(url), url);


[incubator-dubbo] 01/04: support accepting external configuration from application.

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 60b13428a0d79af759dc0221b9c8b5dc96c7c7df
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Nov 13 10:40:43 2018 +0800

    support accepting external configuration from application.
---
 .../apache/dubbo/config/ConfigCenterConfig.java    |  2 +-
 .../dubbo/config/spring/ConfigCenterBean.java      | 29 ++++++++++++++++++++--
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
index 50b7699..08e9db6 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
@@ -114,7 +114,7 @@ public class ConfigCenterConfig extends AbstractConfig {
         return appname;
     }
 
-    private Map<String, String> parseProperties(String content) throws IOException {
+    protected Map<String, String> parseProperties(String content) throws IOException {
         Map<String, String> map = new HashMap<>();
         if (content == null) {
             logger.warn("You specified the config centre, but there's not even one single config item in it.");
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
index aa88eaf..653a2f5 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
@@ -24,7 +24,10 @@ import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.EnvironmentAware;
+import org.springframework.core.env.Environment;
 
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -33,10 +36,12 @@ import java.util.Map;
  *
  * If use ConfigCenterConfig directly, you should make sure ConfigCenterConfig.init() is called before actually export/refer any Dubbo service.
  */
-public class ConfigCenterBean extends ConfigCenterConfig implements InitializingBean, ApplicationContextAware, DisposableBean {
+public class ConfigCenterBean extends ConfigCenterConfig implements InitializingBean, ApplicationContextAware, DisposableBean, EnvironmentAware {
 
     private transient ApplicationContext applicationContext;
 
+    private boolean auto = false;
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
@@ -63,11 +68,31 @@ public class ConfigCenterBean extends ConfigCenterConfig implements Initializing
             }
         }
 
-        this.init();
+        if (!auto) {
+            this.init();
+        }
     }
 
     @Override
     public void destroy() throws Exception {
 
     }
+
+    @Override
+    public void setEnvironment(Environment environment) {
+        if (auto) {
+            Object rawProperties = environment.getProperty("dubbo.properties", Object.class);
+            Map<String, String> externalProperties = new HashMap<>();
+            try {
+                if (rawProperties instanceof Map) {
+                    externalProperties = (Map<String, String>) rawProperties;
+                } else if (rawProperties instanceof String) {
+                    externalProperties = parseProperties((String) rawProperties);
+                }
+                org.apache.dubbo.config.context.Environment.getInstance().updateExternalConfigurationMap(externalProperties);
+            } catch (Exception e) {
+                throw new IllegalStateException(e);
+            }
+        }
+    }
 }