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/15 11:18:09 UTC

[incubator-dubbo] branch dev-metadata updated: avoid repeat init of dynamicconfiguration

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


The following commit(s) were added to refs/heads/dev-metadata by this push:
     new 2e9e85a  avoid repeat init of dynamicconfiguration
     new 92e8825  Merge branch 'dev-metadata' of https://github.com/apache/incubator-dubbo into dev-metadata
2e9e85a is described below

commit 2e9e85a55a42c0212d1b7d4813e846eb7ff29bfb
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Nov 15 19:17:30 2018 +0800

    avoid repeat init of dynamicconfiguration
---
 .../org/apache/dubbo/config/ConfigCenterConfig.java     | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 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 ad63468..523d2e0 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
@@ -19,6 +19,7 @@ package org.apache.dubbo.config;
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.common.utils.UrlUtils;
 import org.apache.dubbo.config.context.Environment;
@@ -30,6 +31,7 @@ import java.io.StringReader;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 
 /**
  *
@@ -94,11 +96,16 @@ public class ConfigCenterConfig extends AbstractConfig {
 //        checkConfigCenter();
 
         URL url = toConfigUrl();
-        DynamicConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getExtension(url.getProtocol());
-        // TODO, maybe we need a factory to do this?
-        dynamicConfiguration.setUrl(url);
-        dynamicConfiguration.init();
-        return dynamicConfiguration;
+        Set<Object> loadedConfigurations = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getLoadedExtensionInstances();
+        if (CollectionUtils.isEmpty(loadedConfigurations)) {
+            DynamicConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getExtension(url.getProtocol());
+            // TODO, maybe we need a factory to do this?
+            dynamicConfiguration.setUrl(url);
+            dynamicConfiguration.init();
+            return dynamicConfiguration;
+        }
+
+        return (DynamicConfiguration) loadedConfigurations.iterator().next();
     }
 
     private URL toConfigUrl() {