This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.1 by this push:
new ba14a201e7 Sync when destroy (#11783)
ba14a201e7 is described below
commit ba14a201e71dbf0267d411943db30f69840d51b5
Author: Albumen Kevin <[email protected]>
AuthorDate: Fri Mar 10 17:11:17 2023 +0800
Sync when destroy (#11783)
---
.../org/apache/dubbo/rpc/model/ScopeModel.java | 30 ++++++++++++----------
1 file changed, 16 insertions(+), 14 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
index b83f96f46f..e066952528 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
@@ -110,21 +110,23 @@ public abstract class ScopeModel implements
ExtensionAccessor {
}
public void destroy() {
- if (destroyed.compareAndSet(false, true)) {
- try {
- onDestroy();
- HashSet<ClassLoader> copyOfClassLoaders = new
HashSet<>(classLoaders);
- for (ClassLoader classLoader : copyOfClassLoaders) {
- removeClassLoader(classLoader);
- }
- if (beanFactory != null) {
- beanFactory.destroy();
- }
- if (extensionDirector != null) {
- extensionDirector.destroy();
+ synchronized (instLock) {
+ if (destroyed.compareAndSet(false, true)) {
+ try {
+ onDestroy();
+ HashSet<ClassLoader> copyOfClassLoaders = new
HashSet<>(classLoaders);
+ for (ClassLoader classLoader : copyOfClassLoaders) {
+ removeClassLoader(classLoader);
+ }
+ if (beanFactory != null) {
+ beanFactory.destroy();
+ }
+ if (extensionDirector != null) {
+ extensionDirector.destroy();
+ }
+ } catch (Throwable t) {
+ LOGGER.error(CONFIG_UNABLE_DESTROY_MODEL, "", "", "Error
happened when destroying ScopeModel.", t);
}
- } catch (Throwable t) {
- LOGGER.error(CONFIG_UNABLE_DESTROY_MODEL, "", "", "Error
happened when destroying ScopeModel.", t);
}
}
}