Skip to content

Commit 7576b53

Browse files
committed
Support concurrent loading of Config for different namespaces (#29)
1 parent 265fe49 commit 7576b53

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfigManager.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public Config getConfig(String namespace) {
4444
Config config = m_configs.get(namespace);
4545

4646
if (config == null) {
47-
synchronized (this) {
47+
synchronized (buildLock(namespace)) {
4848
config = m_configs.get(namespace);
4949

5050
if (config == null) {
@@ -65,7 +65,7 @@ public ConfigFile getConfigFile(String namespace, ConfigFileFormat configFileFor
6565
ConfigFile configFile = m_configFiles.get(namespaceFileName);
6666

6767
if (configFile == null) {
68-
synchronized (this) {
68+
synchronized (buildLock(namespaceFileName)) {
6969
configFile = m_configFiles.get(namespaceFileName);
7070

7171
if (configFile == null) {
@@ -79,4 +79,8 @@ public ConfigFile getConfigFile(String namespace, ConfigFileFormat configFileFor
7979

8080
return configFile;
8181
}
82+
83+
private String buildLock(String factor) {
84+
return (String.format("%s.%s", getClass().getName(), factor)).intern();
85+
}
8286
}

0 commit comments

Comments
 (0)