This is an automated email from the ASF dual-hosted git repository. tandraschko pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/deltaspike.git
The following commit(s) were added to refs/heads/master by this push: new c5ab0d6 Fix an issue which causes "Argument bean must not be null". When lazyInit() is called concurrently, the first thread should be the only one to initialize it; however, deltaSpikeProxyInvocationHandler has been assigned before all initialization jobs are completed, which sometimes causes issue. new d0e6edf Merge pull request #90 from jw941/master c5ab0d6 is described below commit c5ab0d6672850abdb846dc93f22c180adf651339 Author: Frank Wang <fr...@britensw.com.au> AuthorDate: Wed May 22 09:50:29 2019 +1000 Fix an issue which causes "Argument bean must not be null". When lazyInit() is called concurrently, the first thread should be the only one to initialize it; however, deltaSpikeProxyInvocationHandler has been assigned before all initialization jobs are completed, which sometimes causes issue. --- .../proxy/api/DeltaSpikeProxyContextualLifecycle.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java index c06aeef..d250440 100644 --- a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java +++ b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java @@ -52,11 +52,11 @@ public class DeltaSpikeProxyContextualLifecycle<T, H extends InvocationHandler> private final Class<T> targetClass; private final BeanManager beanManager; - private DeltaSpikeProxyInvocationHandler deltaSpikeProxyInvocationHandler; + private volatile DeltaSpikeProxyInvocationHandler deltaSpikeProxyInvocationHandler; - private InjectionTarget<T> injectionTarget; - private Bean<H> handlerBean; - private CreationalContext<?> creationalContextOfDependentHandler; + private volatile InjectionTarget<T> injectionTarget; + private volatile Bean<H> handlerBean; + private volatile CreationalContext<?> creationalContextOfDependentHandler; public DeltaSpikeProxyContextualLifecycle(Class<T> targetClass, Class<H> delegateInvocationHandlerClass, @@ -141,9 +141,6 @@ public class DeltaSpikeProxyContextualLifecycle<T, H extends InvocationHandler> { if (this.deltaSpikeProxyInvocationHandler == null) { - this.deltaSpikeProxyInvocationHandler = BeanProvider.getContextualReference( - beanManager, DeltaSpikeProxyInvocationHandler.class, false); - Set<Bean<H>> handlerBeans = BeanProvider.getBeanDefinitions( delegateInvocationHandlerClass, false, true, beanManager); if (handlerBeans.size() != 1) @@ -167,6 +164,9 @@ public class DeltaSpikeProxyContextualLifecycle<T, H extends InvocationHandler> + delegateInvocationHandlerClass + " found beans: " + beanInfo.toString()); } this.handlerBean = handlerBeans.iterator().next(); + + this.deltaSpikeProxyInvocationHandler = BeanProvider.getContextualReference( + beanManager, DeltaSpikeProxyInvocationHandler.class, false); } }