This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.3 by this push:
new d5e1412d52 Changed referenceKeyMap entry value type to
CopyOnWriteArrayList (#15258)
d5e1412d52 is described below
commit d5e1412d52a68d45e6c46f09c79563343fa71077
Author: zrlw <[email protected]>
AuthorDate: Wed May 7 11:09:46 2025 +0800
Changed referenceKeyMap entry value type to CopyOnWriteArrayList (#15258)
---
.../config/spring/reference/ReferenceBeanManager.java | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java
index 2bdf44362b..eabe50ad32 100644
---
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java
+++
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java
@@ -26,7 +26,6 @@ import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.model.ModuleModel;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -35,6 +34,7 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArrayList;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
@@ -47,7 +47,7 @@ public class ReferenceBeanManager implements
ApplicationContextAware {
private final ErrorTypeAwareLogger logger =
LoggerFactory.getErrorTypeAwareLogger(getClass());
// reference key -> reference bean names
- private ConcurrentMap<String, List<String>> referenceKeyMap = new
ConcurrentHashMap<>();
+ private ConcurrentMap<String, CopyOnWriteArrayList<String>>
referenceKeyMap = new ConcurrentHashMap<>();
// reference alias -> reference bean name
private ConcurrentMap<String, String> referenceAliasMap = new
ConcurrentHashMap<>();
@@ -102,8 +102,8 @@ public class ReferenceBeanManager implements
ApplicationContextAware {
}
private String getReferenceKeyByBeanName(String referenceBeanName) {
- Set<Map.Entry<String, List<String>>> entries =
referenceKeyMap.entrySet();
- for (Map.Entry<String, List<String>> entry : entries) {
+ Set<Map.Entry<String, CopyOnWriteArrayList<String>>> entries =
referenceKeyMap.entrySet();
+ for (Map.Entry<String, CopyOnWriteArrayList<String>> entry : entries) {
if (entry.getValue().contains(referenceBeanName)) {
return entry.getKey();
}
@@ -112,10 +112,9 @@ public class ReferenceBeanManager implements
ApplicationContextAware {
}
public void registerReferenceKeyAndBeanName(String referenceKey, String
referenceBeanNameOrAlias) {
- List<String> list =
- ConcurrentHashMapUtils.computeIfAbsent(referenceKeyMap,
referenceKey, (key) -> new ArrayList<>());
- if (!list.contains(referenceBeanNameOrAlias)) {
- list.add(referenceBeanNameOrAlias);
+ CopyOnWriteArrayList<String> list =
ConcurrentHashMapUtils.computeIfAbsent(
+ referenceKeyMap, referenceKey, (key) -> new
CopyOnWriteArrayList<>());
+ if (list.addIfAbsent(referenceBeanNameOrAlias)) {
// register bean name as alias
referenceAliasMap.put(referenceBeanNameOrAlias, list.get(0));
}
@@ -132,7 +131,7 @@ public class ReferenceBeanManager implements
ApplicationContextAware {
}
public List<String> getBeanNamesByKey(String key) {
- return Collections.unmodifiableList(referenceKeyMap.getOrDefault(key,
Collections.EMPTY_LIST));
+ return Collections.unmodifiableList(referenceKeyMap.getOrDefault(key,
new CopyOnWriteArrayList<>()));
}
public Collection<ReferenceBean> getReferences() {