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 2020/09/10 04:34:28 UTC

[dubbo] 01/04: make sure dynamic configuration is included after globalConfiguration is cached.

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

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

commit d95aa7e455af2e10d94e7bc356fdc27a0a844b8b
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Sep 8 17:16:20 2020 +0800

    make sure dynamic configuration is included after globalConfiguration is cached.
---
 .../apache/dubbo/common/config/CompositeConfiguration.java   | 12 ++++++++++++
 .../java/org/apache/dubbo/common/config/Environment.java     |  6 ++++++
 2 files changed, 18 insertions(+)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
index eebf5a0..75a79a5 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
@@ -38,6 +38,9 @@ public class CompositeConfiguration implements Configuration {
      */
     private List<Configuration> configList = new LinkedList<Configuration>();
 
+    //FIXME, consider change configList to SortedMap to replace this boolean status.
+    private boolean dynamicIncluded;
+
     public CompositeConfiguration() {
         this(null, null);
     }
@@ -58,6 +61,15 @@ public class CompositeConfiguration implements Configuration {
         }
     }
 
+    public void setDynamicIncluded(boolean dynamicIncluded) {
+        this.dynamicIncluded = dynamicIncluded;
+    }
+
+    //FIXME, consider change configList to SortedMap to replace this boolean status.
+    public boolean isDynamicIncluded() {
+        return dynamicIncluded;
+    }
+
     public void addConfiguration(Configuration configuration) {
         if (configList.contains(configuration)) {
             return;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
index b5f24f7..afc5df3 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
@@ -148,12 +148,18 @@ public class Environment extends LifecycleAdapter implements FrameworkExt {
             globalConfiguration = new CompositeConfiguration();
             if (dynamicConfiguration != null) {
                 globalConfiguration.addConfiguration(dynamicConfiguration);
+                globalConfiguration.setDynamicIncluded(true);
             }
             globalConfiguration.addConfiguration(systemConfiguration);
             globalConfiguration.addConfiguration(environmentConfiguration);
             globalConfiguration.addConfiguration(appExternalConfiguration);
             globalConfiguration.addConfiguration(externalConfiguration);
             globalConfiguration.addConfiguration(propertiesConfiguration);
+        } else {
+            if (!globalConfiguration.isDynamicIncluded() && dynamicConfiguration != null) {
+                globalConfiguration.addConfiguration(dynamicConfiguration);
+                globalConfiguration.setDynamicIncluded(true);
+            }
         }
         return globalConfiguration;
     }