From a7caee5f1f1c938faa9d8c198259f4ecf71c83ce Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Wed, 4 Oct 2017 14:34:06 +0100 Subject: [PATCH] Protect refresh of single bean as well --- .../cloud/context/scope/GenericScope.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/GenericScope.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/GenericScope.java index 20c0a52d..57c3b87f 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/GenericScope.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/GenericScope.java @@ -157,7 +157,14 @@ public class GenericScope implements Scope, BeanFactoryPostProcessor, protected boolean destroy(String name) { BeanLifecycleWrapper wrapper = this.cache.remove(name); if (wrapper != null) { - wrapper.destroy(); + Lock lock = locks.get(wrapper.getName()).writeLock(); + lock.lock(); + try { + wrapper.destroy(); + } + finally { + lock.unlock(); + } this.errors.remove(name); return true; }