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/05 04:19:14 UTC
[incubator-dubbo] branch dev-metadata updated: Add app level
configuration file;
Unified group and namespace in different configcenter implementation.
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 201d1f3 Add app level configuration file; Unified group and namespace in different configcenter implementation.
201d1f3 is described below
commit 201d1f30111c19f7e31c2e3119ffed1863f68668
Author: ken.lj <ke...@gmail.com>
AuthorDate: Mon Nov 5 12:18:59 2018 +0800
Add app level configuration file; Unified group and namespace in different configcenter implementation.
---
.../java/org/apache/dubbo/common/Constants.java | 4 +-
.../org/apache/dubbo/config/AbstractConfig.java | 2 +-
.../apache/dubbo/config/ConfigCenterConfig.java | 68 +++++++++++++---------
.../apache/dubbo/config/context/Environment.java | 15 +++++
.../src/main/resources/META-INF/compat/dubbo.xsd | 4 +-
.../src/main/resources/META-INF/dubbo.xsd | 4 +-
.../META-INF/spring/dubbo-demo-consumer.xml | 6 +-
.../META-INF/spring/dubbo-demo-provider.xml | 2 +-
.../governance/AbstractDynamicConfiguration.java | 6 +-
.../support/apollo/ApolloDynamicConfiguration.java | 13 ++---
.../archaius/ArchaiusDynamicConfiguration.java | 23 ++++++++
.../sources/ZooKeeperConfigurationSource.java | 5 +-
.../java/org/apache/dubbo/registry/ZKTools.java | 4 +-
13 files changed, 105 insertions(+), 51 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
index df67944..a4b64ca 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
@@ -63,10 +63,12 @@ public class Constants {
public static final String CONFIG_ENV_KEY = "config.env";
public static final String CONFIG_CLUSTER_KEY = "config.cluster";
public static final String CONFIG_NAMESPACE_KEY = "config.namespace";
+ public static final String CONFIG_GROUP_KEY = "config.group";
public static final String CONFIG_CHECK_KEY = "config.check";
- public static final String CONFIG_DATAID_KEY = "config.dataid";
+ public static final String CONFIG_CONFIGFILE_KEY = "config.configfile";
public static final String CONFIG_PRIORITY_KEY = "config.priority";
public static final String CONFIG_TIMEOUT_KEY = "config.timeout";
+ public static final String CONFIG_APPNAME_KEY = "config.appname";
public static final String DEFAULT_CATEGORY = PROVIDERS_CATEGORY;
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 68717cb..236e2ba 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
@@ -526,7 +526,7 @@ public abstract class AbstractConfig implements Serializable {
try {
Configuration configuration = ConfigConverter.toConfiguration(this);
CompositeConfiguration compositeConfiguration = Environment.getInstance().getStartupCompositeConf(getPrefix(), getId());
- int index = 2;
+ int index = 3;
if (!Environment.getInstance().isConfigCenterFirst()) {
index = 1;
}
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 e24363a..d454caf 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
@@ -40,14 +40,15 @@ public class ConfigCenterConfig extends AbstractConfig {
private String env;
private String cluster;
private String namespace = "dubbo";
- private String appnamespace;
+ private String group = "dubbo";
private String username;
private String password;
private Long timeout = 3000L;
private Boolean priority = true;
private Boolean check = true;
- private String dataid = "dubbo.properties";
+ private String appname;
+ private String configfile = "dubbo.properties";
// customized parameters
private Map<String, String> parameters;
@@ -77,32 +78,38 @@ public class ConfigCenterConfig extends AbstractConfig {
}
public void init() throws Exception {
- // give jvm properties the chance of overriding local configs.
+ // give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.config.priority
refresh();
URL url = toConfigUrl();
DynamicConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfigurationFactory.class).getAdaptiveExtension().getDynamicConfiguration(url);
Environment.getInstance().setDynamicConfiguration(dynamicConfiguration);
- String configContent = dynamicConfiguration.getConfig(dataid, namespace);
+ String configContent = dynamicConfiguration.getConfig(configfile, group);
+ String appConfigContent = dynamicConfiguration.getConfig(configfile, appname);
try {
- if (configContent == null) {
- logger.warn("You specified the config centre, but there's not even one single config item in it.");
- } else {
- Properties properties = new Properties();
- properties.load(new StringReader(configContent));
- Map<String, String> map = new HashMap<>();
- properties.stringPropertyNames().forEach(
- k -> map.put(k, properties.getProperty(k))
- );
- Environment.getInstance().setConfigCenterFirst(priority);
- Environment.getInstance().updateExternalConfigurationMap(map);
- }
+ Environment.getInstance().setConfigCenterFirst(priority);
+ Environment.getInstance().updateExternalConfigurationMap(parseProperties(configContent));
+ Environment.getInstance().updateAppExternalConfigurationMap(parseProperties(appConfigContent));
} catch (IOException e) {
throw e;
}
}
+ private 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.");
+ } else {
+ Properties properties = new Properties();
+ properties.load(new StringReader(content));
+ properties.stringPropertyNames().forEach(
+ k -> map.put(k, properties.getProperty(k))
+ );
+ }
+ return map;
+ }
+
@Parameter(key = Constants.CONFIG_TYPE_KEY)
public String getType() {
return type;
@@ -148,13 +155,13 @@ public class ConfigCenterConfig extends AbstractConfig {
this.namespace = namespace;
}
- @Parameter(key = "config.appnamespace")
- public String getAppnamespace() {
- return appnamespace;
+ @Parameter(key = Constants.CONFIG_GROUP_KEY)
+ public String getGroup() {
+ return group;
}
- public void setAppnamespace(String appnamespace) {
- this.appnamespace = appnamespace;
+ public void setGroup(String group) {
+ this.group = group;
}
@Parameter(key = Constants.CONFIG_CHECK_KEY)
@@ -200,13 +207,22 @@ public class ConfigCenterConfig extends AbstractConfig {
this.timeout = timeout;
}
- @Parameter(key = Constants.CONFIG_DATAID_KEY)
- public String getDataid() {
- return dataid;
+ @Parameter(key = Constants.CONFIG_CONFIGFILE_KEY)
+ public String getConfigfile() {
+ return configfile;
+ }
+
+ public void setConfigfile(String configfile) {
+ this.configfile = configfile;
+ }
+
+ @Parameter(key = Constants.CONFIG_APPNAME_KEY)
+ public String getAppname() {
+ return appname;
}
- public void setDataid(String dataid) {
- this.dataid = dataid;
+ public void setAppname(String appname) {
+ this.appname = appname;
}
public Map<String, String> getParameters() {
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java
index 1785c6a..0a2bf12 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java
@@ -42,6 +42,7 @@ public class Environment {
private volatile Map<String, SystemConfiguration> systemConfsHolder = new ConcurrentHashMap<>();
private volatile Map<String, EnvironmentConfiguration> environmentConfsHolder = new ConcurrentHashMap<>();
private volatile Map<String, InmemoryConfiguration> externalConfsHolder = new ConcurrentHashMap<>();
+ private volatile Map<String, InmemoryConfiguration> appExternalConfsHolder = new ConcurrentHashMap<>();
private volatile Map<String, CompositeConfiguration> startupCompositeConfsHolder = new ConcurrentHashMap<>();
private volatile Map<String, CompositeConfiguration> runtimeCompositeConfsHolder = new ConcurrentHashMap<>();
@@ -50,6 +51,7 @@ public class Environment {
private volatile boolean isConfigCenterFirst = true;
private Map<String, String> externalConfigurationMap = new HashMap<>();
+ private Map<String, String> appExternalConfigurationMap = new HashMap<>();
public static Environment getInstance() {
return INSTANCE;
@@ -71,6 +73,14 @@ public class Environment {
});
}
+ public InmemoryConfiguration getAppExternalConfiguration(String prefix, String id) {
+ return appExternalConfsHolder.computeIfAbsent(toKey(prefix, id), k -> {
+ InmemoryConfiguration configuration = new InmemoryConfiguration(prefix, id);
+ configuration.addProperties(appExternalConfigurationMap);
+ return configuration;
+ });
+ }
+
public EnvironmentConfiguration getEnvironmentConf(String prefix, String id) {
return environmentConfsHolder.computeIfAbsent(toKey(prefix, id), k -> new EnvironmentConfiguration(prefix, id));
}
@@ -79,10 +89,15 @@ public class Environment {
this.externalConfigurationMap.putAll(externalMap);
}
+ public void updateAppExternalConfigurationMap(Map<String, String> externalMap) {
+ this.appExternalConfigurationMap.putAll(externalMap);
+ }
+
public CompositeConfiguration getStartupCompositeConf(String prefix, String id) {
return startupCompositeConfsHolder.computeIfAbsent(toKey(prefix, id), k -> {
CompositeConfiguration compositeConfiguration = new CompositeConfiguration();
compositeConfiguration.addConfiguration(this.getSystemConf(prefix, id));
+ compositeConfiguration.addConfiguration(this.getAppExternalConfiguration(prefix, id));
compositeConfiguration.addConfiguration(this.getExternalConfiguration(prefix, id));
compositeConfiguration.addConfiguration(this.getPropertiesConf(prefix, id));
return compositeConfiguration;
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
index 1d2fc18..9810969 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
@@ -624,12 +624,12 @@
<![CDATA[ The group of the config center, an isolated space for config items in the same config center. ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute name="appnamespace" type="xsd:string" use="optional">
+ <xsd:attribute name="appname" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation><![CDATA[ The group of the config center. ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute name="dataid" type="xsd:string" use="optional">
+ <xsd:attribute name="configfile" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation><![CDATA[ The key used to get the configs at startup. ]]></xsd:documentation>
</xsd:annotation>
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
index 028c68e..b2ff6cb 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
@@ -618,12 +618,12 @@
<![CDATA[ The group of the config center, an isolated space for config items in the same config center. ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute name="appnamespace" type="xsd:string" use="optional">
+ <xsd:attribute name="appname" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation><![CDATA[ The group of the config center. ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute name="dataid" type="xsd:string" use="optional">
+ <xsd:attribute name="configfile" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation><![CDATA[ The key used to get the configs at startup. ]]></xsd:documentation>
</xsd:annotation>
diff --git a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
index df40d32..a8d25a8 100644
--- a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
+++ b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
@@ -24,11 +24,11 @@
<dubbo:application name="demo-consumer"/>
<!-- use multicast registry center to discover service -->
- <dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181" default="true"/>
- <dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181"/>
+ <!-- <dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181" default="true"/>
+ <dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181"/>-->
<dubbo:configcenter type="zookeeper" address="127.0.0.1:2181" namespace="dubboregistrygroup1"
- dataid="dubbo.properties"/>
+ configfile="dubbo.properties"/>
<!-- generate proxy for the remote service, then demoService can be used in the same way as the
local regular interface -->
diff --git a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
index 3d2e2ed..1ac3128 100644
--- a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
+++ b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
@@ -28,7 +28,7 @@
<!--<dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181" simple="false">
</dubbo:registry>-->
<dubbo:configcenter type="zookeeper" address="127.0.0.1:2181" namespace="dubboregistrygroup1"
- dataid="dubbo.properties"/>
+ configfile="dubbo.properties" appname="demo-provider"/>
<!-- use dubbo protocol to export service on port 20880 -->
<dubbo:protocol name="dubbo" port="-1"/>
diff --git a/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/AbstractDynamicConfiguration.java b/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/AbstractDynamicConfiguration.java
index 2de419b..146f0a1 100644
--- a/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/AbstractDynamicConfiguration.java
+++ b/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/AbstractDynamicConfiguration.java
@@ -27,7 +27,7 @@ import java.util.concurrent.ConcurrentMap;
*
*/
public abstract class AbstractDynamicConfiguration<TargetConfigListener> extends AbstractConfiguration implements DynamicConfiguration {
- public static final String DEFAULT_NAMESPACE = "dubbo";
+ public static final String DEFAULT_GROUP = "dubbo";
protected URL url;
/**
* One key can register multiple target listeners, but one target listener only maps to one configuration listener
@@ -46,7 +46,7 @@ public abstract class AbstractDynamicConfiguration<TargetConfigListener> extends
@Override
public String getConfig(String key) {
- return getConfig(key, url.getParameter(Constants.CONFIG_NAMESPACE_KEY, DEFAULT_NAMESPACE), null);
+ return getConfig(key, url.getParameter(Constants.CONFIG_GROUP_KEY, DEFAULT_GROUP), null);
}
@Override
@@ -56,7 +56,7 @@ public abstract class AbstractDynamicConfiguration<TargetConfigListener> extends
@Override
public String getConfig(String key, ConfigurationListener listener) {
- return getConfig(key, url.getParameter(Constants.CONFIG_NAMESPACE_KEY, DEFAULT_NAMESPACE), listener);
+ return getConfig(key, url.getParameter(Constants.CONFIG_GROUP_KEY, DEFAULT_GROUP), listener);
}
@Override
diff --git a/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java b/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java
index 0c83088..b236709 100644
--- a/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java
+++ b/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java
@@ -44,7 +44,6 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con
private static final String APOLLO_ENV_KEY = "env";
private static final String APOLLO_ADDR_KEY = "apollo.meta";
private static final String APOLLO_CLUSTER_KEY = "apollo.cluster";
- private static final String APPLO_DEFAULT_NAMESPACE = "dubbo";
private Config dubboConfig;
@@ -72,7 +71,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con
System.setProperty(APOLLO_CLUSTER_KEY, configCluster);
}
- dubboConfig = ConfigService.getConfig(url.getParameter(Constants.CONFIG_NAMESPACE_KEY, APPLO_DEFAULT_NAMESPACE));
+ dubboConfig = ConfigService.getConfig(url.getParameter(Constants.CONFIG_GROUP_KEY, DEFAULT_GROUP));
// Decide to fail or to continue when failed to connect to remote server.
boolean check = url.getParameter(Constants.CONFIG_CHECK_KEY, false);
if (dubboConfig.getSourceType() != ConfigSourceType.REMOTE) {
@@ -87,9 +86,9 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con
}
/**
- * This method will used by DynamicConfiguration,
- * 1. to get configuration file at startup phase
- * 2. to get all kinds of Dubbo rules
+ * This method will being used to,
+ * 1. get configuration file at startup phase
+ * 2. get all kinds of Dubbo rules
*
* @param key
* @param group
@@ -98,7 +97,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con
*/
@Override
protected String getInternalProperty(String key, String group, long timeout) {
- if (group != null) {
+ if (DEFAULT_GROUP.equals(group)) {
Config config = ConfigService.getConfig(group);
if (config != null) {
return config.getProperty(key, null);
@@ -111,7 +110,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con
/**
* This method will used by Configuration to get valid value at runtime.
* The group is expected to be 'app level', which can be fetched from the 'config.appnamespace' in url if necessary.
- * But I think Apollo's inheritance feature of namespace can solve the problem, .
+ * But I think Apollo's inheritance feature of namespace can solve the problem .
*
* @param key
* @return
diff --git a/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java b/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java
index 922387d..e35f95d 100644
--- a/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java
+++ b/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java
@@ -63,13 +63,36 @@ public class ArchaiusDynamicConfiguration extends AbstractDynamicConfiguration<R
}
}
+ /**
+ * The hierarchy of configuration properties is:
+ * 1. /{namespace}/config/dubbo/dubbo.properties
+ * 2. /{namespace}/config/applicationname/dubbo.properties
+ * <p>
+ * To make the API compatible with other configuration systems, the key doesn't has group as prefix, so we should add the group prefix before try to get value.
+ * If being used for dubbo router rules, the key must already contains group prefix.
+ *
+ * @param key
+ * @param group
+ * @param timeout
+ * @return
+ */
@Override
protected String getInternalProperty(String key, String group, long timeout) {
+ if (StringUtils.isNotEmpty(group)) {
+ key = group + "." + key;
+ }
+
return DynamicPropertyFactory.getInstance()
.getStringProperty(key, null)
.get();
}
+ /**
+ * First, get app level configuration
+ * If there's no value in app level, try to get global dubbo level.
+ * @param key
+ * @return
+ */
@Override
protected Object getInternalProperty(String key) {
return DynamicPropertyFactory.getInstance()
diff --git a/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/sources/ZooKeeperConfigurationSource.java b/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/sources/ZooKeeperConfigurationSource.java
index ec48c2d..2e810d4 100644
--- a/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/sources/ZooKeeperConfigurationSource.java
+++ b/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/sources/ZooKeeperConfigurationSource.java
@@ -27,7 +27,6 @@ import org.apache.curator.framework.recipes.cache.TreeCache;
import org.apache.curator.framework.recipes.cache.TreeCacheEvent;
import org.apache.curator.framework.recipes.cache.TreeCacheListener;
import org.apache.curator.retry.ExponentialBackoffRetry;
-import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.StringUtils;
import org.slf4j.Logger;
@@ -212,10 +211,10 @@ public class ZooKeeperConfigurationSource implements WatchedConfigurationSource,
if (dataMap != null && dataMap.size() > 0) {
dataMap.forEach((childPath, childData) -> {
String fullChildPath = configRootPath + "/" + childPath;
- // special treatment for /dubbo/config/dubbo.properties, it's the only config item need to store in cache in this level.
+ /*// special treatment for /dubbo/config/dubbo.properties, it's the only config item need to store in cache in this level.
if (childPath.equals(url.getParameter(Constants.CONFIG_DATAID_KEY))) {
all.put(pathToKey(fullChildPath), new String(childData.getData(), charset));
- }
+ }*/
treeCache.getCurrentChildren(fullChildPath).forEach((subChildPath, subChildData) -> {
all.put(pathToKey(fullChildPath + "/" + subChildPath), new String(subChildData.getData(), charset));
});
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
index 480c3a8..930a286 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
@@ -52,7 +52,7 @@ public class ZKTools {
}
public static void testStartupConfig() {
- String str = "dubbo.registry.address=zookeeper://127.0.0.1:2181\n" +
+ String str = "dubbo.registry.address=zookeeper://127.0.0.1:2182\n" +
"dubbo.registry.group=dubboregistrygroup1\n" +
"dubbo.servicestore.address=zookeeper://127.0.0.1:2181\n" +
"dubbo.protocol.port=20990\n" +
@@ -61,7 +61,7 @@ public class ZKTools {
System.out.println(str);
try {
- String path = "/dubboregistrygroup1/config/dubbo.properties";
+ String path = "/dubboregistrygroup1/config/demo-provider/dubbo.properties";
if (client.checkExists().forPath(path) == null) {
client.create().creatingParentsIfNeeded().forPath(path);
}