You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/11/23 06:41:06 UTC
[dubbo] branch 3.0 updated: [3.0] Ensure Concurrent Safe of Model & Change MetadataParamsFilter scope (#9309)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 686d357 [3.0] Ensure Concurrent Safe of Model & Change MetadataParamsFilter scope (#9309)
686d357 is described below
commit 686d3571d225adf9500efc9f487f69bcd3b428de
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Tue Nov 23 14:40:54 2021 +0800
[3.0] Ensure Concurrent Safe of Model & Change MetadataParamsFilter scope (#9309)
* [3.0] Ensure Concurrent Safe of Model & Change MetadataParamsFilter scope
* revert ServiceModel
---
.../org/apache/dubbo/common/beans/factory/ScopeBeanFactory.java | 4 ++--
.../apache/dubbo/common/resource/GlobalResourcesRepository.java | 6 +++---
.../src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java | 5 +++--
.../src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java | 7 ++++---
.../main/java/org/apache/dubbo/metadata/MetadataParamsFilter.java | 3 ++-
5 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/beans/factory/ScopeBeanFactory.java b/dubbo-common/src/main/java/org/apache/dubbo/common/beans/factory/ScopeBeanFactory.java
index e34ea8a..bd58827 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/beans/factory/ScopeBeanFactory.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/beans/factory/ScopeBeanFactory.java
@@ -28,10 +28,10 @@ import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ScopeModelAccessor;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
@@ -48,7 +48,7 @@ public class ScopeBeanFactory {
private ExtensionAccessor extensionAccessor;
private List<ExtensionPostProcessor> extensionPostProcessors;
private Map<Class, AtomicInteger> beanNameIdCounterMap = new ConcurrentHashMap<>();
- private List<BeanInfo> registeredBeanInfos = Collections.synchronizedList(new ArrayList<>());
+ private List<BeanInfo> registeredBeanInfos = new CopyOnWriteArrayList<>();
private InstantiationStrategy instantiationStrategy;
private AtomicBoolean destroyed = new AtomicBoolean();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java b/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java
index 58e9b76..4f74ddc 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java
@@ -21,8 +21,8 @@ import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.NamedThreadFactory;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -36,8 +36,8 @@ public class GlobalResourcesRepository {
private volatile static GlobalResourcesRepository instance;
private volatile ExecutorService executorService;
- private final List<Disposable> oneoffDisposables = Collections.synchronizedList(new ArrayList<>());
- private static final List<Disposable> globalReusedDisposables = Collections.synchronizedList(new ArrayList<>());
+ private final List<Disposable> oneoffDisposables = new CopyOnWriteArrayList<>();
+ private static final List<Disposable> globalReusedDisposables = new CopyOnWriteArrayList<>();
private GlobalResourcesRepository() {
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
index d6001ba..b8dbf60 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
@@ -34,6 +34,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -53,8 +54,8 @@ import java.util.concurrent.atomic.AtomicInteger;
public class ApplicationModel extends ScopeModel {
protected static final Logger LOGGER = LoggerFactory.getLogger(ApplicationModel.class);
public static final String NAME = "ApplicationModel";
- private final List<ModuleModel> moduleModels = Collections.synchronizedList(new ArrayList<>());
- private final List<ModuleModel> pubModuleModels = Collections.synchronizedList(new ArrayList<>());
+ private final List<ModuleModel> moduleModels = new CopyOnWriteArrayList<>();
+ private final List<ModuleModel> pubModuleModels = new CopyOnWriteArrayList<>();
private Environment environment;
private ConfigManager configManager;
private ServiceRepository serviceRepository;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
index b9f2332..f66873a 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
@@ -30,6 +30,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
@@ -51,11 +52,11 @@ public class FrameworkModel extends ScopeModel {
private volatile ApplicationModel defaultAppModel;
- private static List<FrameworkModel> allInstances = Collections.synchronizedList(new ArrayList<>());
+ private static List<FrameworkModel> allInstances = new CopyOnWriteArrayList<>();
- private List<ApplicationModel> applicationModels = Collections.synchronizedList(new ArrayList<>());
+ private List<ApplicationModel> applicationModels = new CopyOnWriteArrayList<>();
- private List<ApplicationModel> pubApplicationModels = Collections.synchronizedList(new ArrayList<>());
+ private List<ApplicationModel> pubApplicationModels = new CopyOnWriteArrayList<>();
private FrameworkServiceRepository serviceRepository;
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataParamsFilter.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataParamsFilter.java
index 542acb1..33ae7c4 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataParamsFilter.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataParamsFilter.java
@@ -16,9 +16,10 @@
*/
package org.apache.dubbo.metadata;
+import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
-@SPI
+@SPI(scope = ExtensionScope.MODULE)
public interface MetadataParamsFilter {
/**