From ec11d4bbfe317aab9bef7adc02e034104233dbfa Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 20 Mar 2018 13:50:59 +0100 Subject: [PATCH] Avoiding NPE for proxied beans upon context shutdown; fixes gh-340 --- .../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 fcad5b9d..452631ff 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 @@ -466,7 +466,14 @@ public class GenericScope implements Scope, BeanFactoryPostProcessor, return invocation.proceed(); } Object proxy = getObject(); - Lock lock = locks.get(this.targetBeanName).readLock(); + ReadWriteLock readWriteLock = locks.get(this.targetBeanName); + if (readWriteLock == null) { + if (logger.isDebugEnabled()) { + logger.debug("For bean with name [" + this.targetBeanName + "] there is no read write lock. Will create a new one to avoid NPE"); + } + readWriteLock = new ReentrantReadWriteLock(); + } + Lock lock = readWriteLock.readLock(); lock.lock(); try { if (proxy instanceof Advised) {