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

commit 9897aa3d7273e3eb96910cfdc09709a77cae50b0
Author: ken.lj <[email protected]>
AuthorDate: Mon Dec 24 14:49:22 2018 +0800

    remove appConfigs cache to support one service/reference registered more 
than one time (if users don't explicitly add id, cache can not work properly)
---
 .../apache/dubbo/common/config/Environment.java    | 37 +++-------------------
 .../org/apache/dubbo/config/AbstractConfig.java    | 16 +++++++---
 2 files changed, 17 insertions(+), 36 deletions(-)

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 74c9d30..4526fbc 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
@@ -35,7 +35,6 @@ public class Environment {
     private Map<String, EnvironmentConfiguration> environmentConfigs = new 
ConcurrentHashMap<>();
     private Map<String, InmemoryConfiguration> externalConfigs = new 
ConcurrentHashMap<>();
     private Map<String, InmemoryConfiguration> appExternalConfigs = new 
ConcurrentHashMap<>();
-    private Map<String, InmemoryConfiguration> appConfigs = new 
ConcurrentHashMap<>();
 
     private Map<String, String> externalConfigurationMap = new HashMap<>();
     private Map<String, String> appExternalConfigurationMap = new HashMap<>();
@@ -79,10 +78,6 @@ public class Environment {
         return environmentConfigs.computeIfAbsent(toKey(prefix, id), k -> new 
EnvironmentConfiguration(prefix, id));
     }
 
-    public InmemoryConfiguration getAppConfig(String prefix, String id) {
-        return appConfigs.get(toKey(prefix, id));
-    }
-
     public void setExternalConfigMap(Map<String, String> 
externalConfiguration) {
         this.externalConfigurationMap = externalConfiguration;
     }
@@ -99,14 +94,6 @@ public class Environment {
         return appExternalConfigurationMap;
     }
 
-    public void addAppConfig(String prefix, String id, Map<String, String> 
properties) {
-        appConfigs.computeIfAbsent(toKey(prefix, id), k -> {
-            InmemoryConfiguration configuration = new 
InmemoryConfiguration(prefix, id);
-            configuration.addProperties(properties);
-            return configuration;
-        });
-    }
-
     public void updateExternalConfigurationMap(Map<String, String> 
externalMap) {
         this.externalConfigurationMap.putAll(externalMap);
     }
@@ -124,27 +111,13 @@ public class Environment {
      * @param id
      * @return
      */
-    public Configuration getConfiguration(String prefix, String id) {
+    public CompositeConfiguration getConfiguration(String prefix, String id) {
         CompositeConfiguration compositeConfiguration = new 
CompositeConfiguration();
-        InmemoryConfiguration appConfig = this.getAppConfig(prefix, id);
         // Config center has the highest priority
-        if (!configCenterFirst) {
-            
compositeConfiguration.addConfiguration(this.getSystemConfig(prefix, id));
-            if (appConfig != null) {
-                compositeConfiguration.addConfiguration(appConfig);
-            }
-            
compositeConfiguration.addConfiguration(this.getAppExternalConfig(prefix, id));
-            
compositeConfiguration.addConfiguration(this.getExternalConfig(prefix, id));
-            
compositeConfiguration.addConfiguration(this.getPropertiesConfig(prefix, id));
-        } else {
-            
compositeConfiguration.addConfiguration(this.getSystemConfig(prefix, id));
-            
compositeConfiguration.addConfiguration(this.getAppExternalConfig(prefix, id));
-            
compositeConfiguration.addConfiguration(this.getExternalConfig(prefix, id));
-            if (appConfig != null) {
-                compositeConfiguration.addConfiguration(appConfig);
-            }
-            
compositeConfiguration.addConfiguration(this.getPropertiesConfig(prefix, id));
-        }
+        compositeConfiguration.addConfiguration(this.getSystemConfig(prefix, 
id));
+        
compositeConfiguration.addConfiguration(this.getAppExternalConfig(prefix, id));
+        compositeConfiguration.addConfiguration(this.getExternalConfig(prefix, 
id));
+        
compositeConfiguration.addConfiguration(this.getPropertiesConfig(prefix, id));
         return compositeConfiguration;
     }
 
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
index 952853d..a52b355 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java
@@ -18,8 +18,9 @@ package org.apache.dubbo.config;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.config.Configuration;
+import org.apache.dubbo.common.config.CompositeConfiguration;
 import org.apache.dubbo.common.config.Environment;
+import org.apache.dubbo.common.config.InmemoryConfiguration;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
@@ -536,9 +537,16 @@ public abstract class AbstractConfig implements 
Serializable {
      */
     public void refresh() {
         try {
-            Environment env = Environment.getInstance();
-            env.addAppConfig(getPrefix(), getId(), getMetaData());
-            Configuration configuration = env.getConfiguration(getPrefix(), 
getId());
+            CompositeConfiguration compositeConfiguration = 
Environment.getInstance().getConfiguration(getPrefix(), getId());
+            InmemoryConfiguration configuration = new 
InmemoryConfiguration(getPrefix(), getId());
+            configuration.addProperties(getMetaData());
+            if (Environment.getInstance().isConfigCenterFirst()) {
+                // The sequence would be: SystemConfiguration -> 
ExternalConfiguration -> AppExternalConfiguration -> AbstractConfig -> 
PropertiesConfiguration
+                compositeConfiguration.addConfiguration(3,configuration);
+            } else {
+                // The sequence would be: SystemConfiguration -> 
AbstractConfig -> ExternalConfiguration -> AppExternalConfiguration -> 
PropertiesConfiguration
+                compositeConfiguration.addConfiguration(1, configuration);
+            }
 
             // loop methods, get override value and set the new value back to 
method
             Method[] methods = getClass().getMethods();

Reply via email to