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 2021/12/13 15:47:10 UTC
[dubbo] branch 3.0.5-release updated: [3.0] fix #9346 use CopyOnWriteArrayList (#9348)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0.5-release
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0.5-release by this push:
new 9ef175a [3.0] fix #9346 use CopyOnWriteArrayList (#9348)
9ef175a is described below
commit 9ef175ac7d7d9c3ddae91518b96cc4e92cbbf255
Author: Wang Chengming <63...@qq.com>
AuthorDate: Mon Dec 13 23:46:33 2021 +0800
[3.0] fix #9346 use CopyOnWriteArrayList (#9348)
fixes #9346
---
.../dubbo/common/config/CompositeConfiguration.java | 17 +++++++++--------
.../apache/dubbo/common/config/ConfigurationCache.java | 3 ++-
.../apache/dubbo/common/config/ConfigurationUtils.java | 7 ++++---
.../dubbo/common/config/InmemoryConfiguration.java | 6 ++++--
4 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
index 887591b..a1e5e0e 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
@@ -21,19 +21,19 @@ import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.ArrayUtils;
import java.util.Arrays;
-import java.util.LinkedList;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
/**
* This is an abstraction specially customized for the sequence Dubbo retrieves properties.
*/
public class CompositeConfiguration implements Configuration {
- private Logger logger = LoggerFactory.getLogger(CompositeConfiguration.class);
+ private final Logger logger = LoggerFactory.getLogger(CompositeConfiguration.class);
/**
* List holding all the configuration
*/
- private List<Configuration> configList = new LinkedList<>();
+ private final List<Configuration> configList = new CopyOnWriteArrayList<>();
//FIXME, consider change configList to SortedMap to replace this boolean status.
private boolean dynamicIncluded;
@@ -47,15 +47,15 @@ public class CompositeConfiguration implements Configuration {
}
}
- public void setDynamicIncluded(boolean dynamicIncluded) {
- this.dynamicIncluded = dynamicIncluded;
- }
-
//FIXME, consider change configList to SortedMap to replace this boolean status.
public boolean isDynamicIncluded() {
return dynamicIncluded;
}
+ public void setDynamicIncluded(boolean dynamicIncluded) {
+ this.dynamicIncluded = dynamicIncluded;
+ }
+
public void addConfiguration(Configuration configuration) {
if (configList.contains(configuration)) {
return;
@@ -80,7 +80,8 @@ public class CompositeConfiguration implements Configuration {
return value;
}
} catch (Exception e) {
- logger.error("Error when trying to get value for key " + key + " from " + config + ", will continue to try the next one.");
+ logger.error("Error when trying to get value for key " + key + " from " + config + ", " +
+ "will continue to try the next one.");
}
}
return null;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationCache.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationCache.java
index 977cdfb..c4e5ab3 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationCache.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationCache.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.common.config;
+import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ScopeModel;
import java.util.Map;
@@ -37,7 +38,7 @@ public class ConfigurationCache {
*/
public String computeIfAbsent(String key, Function<String, String> function) {
String value = cache.get(key);
- if (value == null) {
+ if (StringUtils.isEmpty(value)) {
// lock free, tolerate repeat apply, will return previous value
cache.putIfAbsent(key, function.apply(key));
value = cache.get(key);
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
index 427473c..d0c2f23 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.extension.ExtensionAccessor;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ScopeModel;
@@ -107,7 +108,7 @@ public class ConfigurationUtils {
Configuration configuration = getGlobalConfiguration(scopeModel);
String value = StringUtils.trim(configuration.getString(SHUTDOWN_WAIT_KEY));
- if (value != null && value.length() > 0) {
+ if (StringUtils.isNotEmpty(value)) {
try {
timeout = Integer.parseInt(value);
} catch (Exception e) {
@@ -115,7 +116,7 @@ public class ConfigurationUtils {
}
} else {
value = StringUtils.trim(configuration.getString(SHUTDOWN_WAIT_SECONDS_KEY));
- if (value != null && value.length() > 0) {
+ if (StringUtils.isNotEmpty(value)) {
try {
timeout = Integer.parseInt(value) * 1000;
} catch (Exception e) {
@@ -229,7 +230,7 @@ public class ConfigurationUtils {
resultMap = new LinkedHashMap<>();
}
- if (null != configMap) {
+ if (CollectionUtils.isNotEmptyMap(configMap)) {
for(Map.Entry<String, V> entry : configMap.entrySet()) {
String key = entry.getKey();
V val = entry.getValue();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/InmemoryConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/InmemoryConfiguration.java
index 92d808d..7b3fa98 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/InmemoryConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/InmemoryConfiguration.java
@@ -16,6 +16,8 @@
*/
package org.apache.dubbo.common.config;
+import org.apache.dubbo.common.utils.CollectionUtils;
+
import java.util.LinkedHashMap;
import java.util.Map;
@@ -56,7 +58,7 @@ public class InmemoryConfiguration implements Configuration {
* Add a set of properties into the store
*/
public void addProperties(Map<String, String> properties) {
- if (properties != null) {
+ if (CollectionUtils.isNotEmptyMap(properties)) {
this.store.putAll(properties);
}
}
@@ -65,7 +67,7 @@ public class InmemoryConfiguration implements Configuration {
* set store
*/
public void setProperties(Map<String, String> properties) {
- if (properties != null) {
+ if (CollectionUtils.isNotEmptyMap(properties)) {
this.store = properties;
}
}