ARTEMIS-962 Fix CME when parsing system properties

Add synchronized block against the properties before iterating on them.

JIRA: https://issues.apache.org/jira/browse/ARTEMIS-926
This commit is contained in:
Jeff Mesnil 2017-01-18 15:56:35 +01:00
parent 43aaf52d42
commit 5ae47e8c3c
1 changed files with 13 additions and 12 deletions

View File

@ -308,22 +308,23 @@ public class ConfigurationImpl implements Configuration, Serializable {
@Override @Override
public Configuration parseSystemProperties(Properties properties) throws Exception { public Configuration parseSystemProperties(Properties properties) throws Exception {
synchronized (properties) {
Map<String, Object> beanProperties = new HashMap<>();
Map<String, Object> beanProperties = new HashMap<>(); for (Map.Entry<Object, Object> entry : properties.entrySet()) {
if (entry.getKey().toString().startsWith(systemPropertyPrefix)) {
for (Map.Entry<Object, Object> entry : properties.entrySet()) { String key = entry.getKey().toString().substring(systemPropertyPrefix.length());
if (entry.getKey().toString().startsWith(systemPropertyPrefix)) { logger.debug("Setting up config, " + key + "=" + entry.getValue());
String key = entry.getKey().toString().substring(systemPropertyPrefix.length()); beanProperties.put(key, entry.getValue());
logger.debug("Setting up config, " + key + "=" + entry.getValue()); }
beanProperties.put(key, entry.getValue());
} }
}
if (!beanProperties.isEmpty()) { if (!beanProperties.isEmpty()) {
BeanSupport.setData(this, beanProperties); BeanSupport.setData(this, beanProperties);
} }
return this; return this;
}
} }
@Override @Override