[jboss-jira] [JBoss JIRA] (WFLY-8954) Wildfly 10 with eclipselink Onscucess observer gets stale entity
Nuno Godinho de Matos (JIRA)
issues at jboss.org
Sat Jun 24 12:23:01 EDT 2017
[ https://issues.jboss.org/browse/WFLY-8954?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13426332#comment-13426332 ]
Nuno Godinho de Matos edited comment on WFLY-8954 at 6/24/17 12:22 PM:
-----------------------------------------------------------------------
Hi,
I have now launche the sample application on both application servers, and tested the triggering to event B on both app servers. The event B, is the one where the observer of event B is a @Singleton @TransactioAsttirbute requires new.
My impresison, is that the bug is not in the "com.arjuna" but rather on the wildfly/jboss registration of onsuccess oberservers into this adapter, to determine what should happen during on succes.
But here I am going a bit to far on my analysis, since I am not really sure how exactly these different components glue together. But as you will see in the stack traces posted bellow, the arjuna code seems to be doing some sort of generic loop invoking oncusscess obverserves.
And it just so happens to appear that arjuna is first invoking the CDI / EJB on success event publisher and only later the eclipse link sessiong synchronizer code.
But I leave to you guys the actual conclusion on the bug, I believe these stack traces have everything in there to point the bug and the above is just my impression / but since I have never written container code it is all I can offer.
OK so first we start with the stack traces for weblogic:
On weblogic I put two stack traces.
1. The first stack trace is my break point the eclipselink RepeatableWriteUnitOfWork.mergeToParent() getting called.
2. The second trace corresponds to my second break point getting hit, which is the business logic for the observes event.
The above stack traces are perfectly in line to theory we have discussed above.
And it makes perfect logic sense. First weblogic commits and synchronizies the server session cache. Then it calls our on success business logic.
{panel}
-- -------------------------
-- MOMENT 1: clicking on the web page to trigger event B
-- -------------------------
1 CLICK EVENT B
-- -------------------------
-- MOMENT 2: The break point in the RepeatableWriteUnitOfWorkMerge to parent gets hit (it is around here that mreging to server session will be taking place)
-- -------------------------
2. Repeatable write unti of work merge chages into parent:
Daemon Thread [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] (Suspended (breakpoint at line 371 in org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork))
owns: weblogic.transaction.internal.ServerSCInfo (id=269)
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl).mergeClonesAfterCompletion() line: 3412
org.eclipse.persistence.transaction.JTASynchronizationListener(org.eclipse.persistence.transaction.AbstractSynchronizationListener).afterCompletion(java.lang.Object) line: 217
org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(int) line: 79
weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(javax.transaction.Synchronization, int, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.invocation.ComponentInvocationContext) line: 1254
weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(int, weblogic.transaction.internal.TransactionImpl) line: 1225
weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions() line: 3630
weblogic.transaction.internal.ServerTransactionImpl.afterCommittedStateHousekeeping() line: 3527
weblogic.transaction.internal.ServerTransactionImpl.setCommitted() line: 3573
weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(int, int, int) line: 3297
weblogic.transaction.internal.ServerTransactionImpl.globalCommit(int) line: 3197
weblogic.transaction.internal.ServerTransactionImpl.internalCommit() line: 309
weblogic.transaction.internal.ServerTransactionImpl.commit() line: 257
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).postInvoke1(int, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 316
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).__WL_postInvokeTxRetry(weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 195
weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(weblogic.ejb.container.interfaces.Invokable, weblogic.ejb.container.internal.BaseLocalObject, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Object[], int) line: 46
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade_uskw20_NoIntfViewImpl.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 650
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 286
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 260
-- ------------------------- -- -------------------------
-- MOMENT 3: Breakpoint on observer gets hit the server sesison cache already holds the changes
-- -------------------------
3. - On Success observer:
Daemon Thread [[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'] (Suspended (breakpoint at line 55 in wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade))
owns: weblogic.transaction.internal.ServerSCInfo (id=237)
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade_y0uz1i_Impl(wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade).observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: 55
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 310
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint() line: 182
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 149
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed() line: 101
inteceptor.FacadeInterceptor(inteceptor.GenericLoggingInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 93
sun.reflect.GeneratedMethodAccessor402.invoke(java.lang.Object, java.lang.Object[]) line: not available
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 94
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed() line: 101
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 101
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed() line: 101
org.jboss.weld.ejb.SessionBeanInterceptor(org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 64
org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(javax.interceptor.InvocationContext) line: 52
sun.reflect.GeneratedMethodAccessor144.invoke(java.lang.Object, java.lang.Object[]) line: not available
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 94
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 131
com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 119
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 215
com.sun.proxy.$Proxy368.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade_y0uz1i_NoIntfViewImpl.__WL_invoke(java.lang.Object, java.lang.Object[], int) line: not available
weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(weblogic.ejb.container.interfaces.Invokable, weblogic.ejb.container.internal.BaseLocalObject, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Object[], int) line: 33
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade_y0uz1i_NoIntfViewImpl.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$Proxy$_$$_Weld$EnterpriseProxy$.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object[], java.lang.Class<? extends java.lang.RuntimeException>) line: 88
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>, java.lang.Class<? extends java.lang.RuntimeException>) line: 78
org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(java.lang.Object, org.jboss.weld.injection.MethodInjectionPoint<?,?>, T, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>) line: 129
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T, java.lang.Object, javax.enterprise.context.spi.CreationalContext<?>) line: 309
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T) line: 287
org.jboss.weld.event.ObserverMethodImpl<T,X>.notify(T) line: 265
org.jboss.weld.event.DeferredEventNotification$1.execute() line: 69
org.jboss.weld.event.DeferredEventNotification$1(org.jboss.weld.event.DeferredEventNotification$RunInRequest).run() line: 101
org.jboss.weld.event.DeferredEventNotification<T>.run() line: 75
org.jboss.weld.event.TransactionSynchronizedRunnable.afterCompletion(int) line: 54
weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(javax.transaction.Synchronization, int, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.invocation.ComponentInvocationContext) line: 1254
weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(int, weblogic.transaction.internal.TransactionImpl) line: 1225
weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions() line: 3630
weblogic.transaction.internal.ServerTransactionImpl.afterCommittedStateHousekeeping() line: 3527
weblogic.transaction.internal.ServerTransactionImpl.setCommitted() line: 3573
weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(int, int, int) line: 3297
weblogic.transaction.internal.ServerTransactionImpl.globalCommit(int) line: 3197
weblogic.transaction.internal.ServerTransactionImpl.internalCommit() line: 309
weblogic.transaction.internal.ServerTransactionImpl.commit() line: 257
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).postInvoke1(int, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 316
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).__WL_postInvokeTxRetry(weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 195
weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(weblogic.ejb.container.interfaces.Invokable, weblogic.ejb.container.internal.BaseLocalObject, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Object[], int) line: 46
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade_uskw20_NoIntfViewImpl.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 650
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 286
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 260
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(javax.servlet.ServletRequest, javax.servlet.http.HttpServletRequest, weblogic.servlet.internal.ServletRequestImpl, javax.servlet.ServletResponse, javax.servlet.http.HttpServletResponse, javax.servlet.Servlet) line: 137
weblogic.servlet.internal.ServletStubImpl.execute(javax.servlet.ServletRequest, javax.servlet.ServletResponse, weblogic.servlet.internal.FilterChainImpl) line: 350
weblogic.servlet.internal.TailFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) line: 25
weblogic.servlet.internal.FilterChainImpl.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 78
weblogic.servlet.internal.RequestEventsFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) line: 32
weblogic.servlet.internal.FilterChainImpl.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 78
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(weblogic.servlet.internal.ServletStub, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) line: 3683
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run() line: 3649
weblogic.security.acl.internal.AuthenticatedSubject.doAs(weblogic.security.subject.AbstractSubject, java.security.PrivilegedAction) line: 326
weblogic.security.service.SecurityManager.runAsForUserCode(weblogic.security.acl.internal.AuthenticatedSubject, weblogic.security.acl.internal.AuthenticatedSubject, java.security.PrivilegedAction<T>) line: 197
weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(weblogic.security.acl.internal.AuthenticatedSubject, java.security.PrivilegedAction, weblogic.security.acl.internal.AuthenticatedSubject) line: 203
weblogic.servlet.provider.WlsSubjectHandle.run(java.security.PrivilegedAction) line: 71
weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(weblogic.servlet.internal.ServletInvocationContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean, boolean, boolean) line: 2433
weblogic.servlet.internal.WebAppServletContext.securedExecute(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean) line: 2281
weblogic.servlet.internal.WebAppServletContext.execute(weblogic.servlet.internal.ServletRequestImpl, weblogic.servlet.internal.ServletResponseImpl) line: 2259
weblogic.servlet.internal.ServletRequestImpl.runInternal() line: 1691
weblogic.servlet.internal.ServletRequestImpl.run() line: 1651
weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run() line: 270
weblogic.invocation.ComponentInvocationContextManager._runAs(weblogic.invocation.ComponentInvocationContext, java.lang.Runnable) line: 348
weblogic.invocation.ComponentInvocationContextManager.runAs(java.security.Principal, weblogic.invocation.ComponentInvocationContext, java.lang.Runnable) line: 333
weblogic.work.LivePartitionUtility.doRunWorkUnderContext(java.lang.Runnable, weblogic.invocation.ComponentInvocationContext) line: 54
weblogic.work.PartitionUtility.runWorkUnderContext(java.lang.Runnable, weblogic.invocation.ComponentInvocationContext) line: 41
weblogic.work.ServerWorkManagerImpl(weblogic.work.SelfTuningWorkManagerImpl).runWorkUnderContext(weblogic.work.ExecuteThread, weblogic.work.WorkAdapter) line: 640
weblogic.work.ExecuteThread.execute(weblogic.work.WorkAdapter) line: 406
weblogic.work.ExecuteThread.run() line: 346
{panel}
Now on Wildfly, the stack traces also follow the theory above. So the order by which our break points get hit is reversed.
1. The first break point that gets hit is the break point we put on success obversvation.
2. The second break point that gets hit is when eclipselink is doing the RepeatbleWriteUnit of work merge to parent.
3. I also add third stack trace that corresponds to the same break point on eclipselink getting hit a second time. This happens because we have two JTA transactions that commit. The original business transaction and the observer on success transaction.
So what went wrong is that our break point on point (2) was not hit before the break point on the success obverver.
Finally, since in these break points the arjuna code seems to be delegating to the container the respnsability of handling on succes:
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
we can imagine that this code here is a generic piece of code invoking some command like invoation or subscriber like notification , and the problem would be the order by which the subscribers/commands are ordered in the loop.
Here are the stack traces for wildfly:
{panel}
WILDFLY:
-- -------------------------
-- MOMENT 1: clicking on the web page to trigger event B
-- -------------------------
-- -------------------------
-- MOMENT 2: The break point on the observers event gets hit (we have a bug our merge breakpoint should have been hit)
-- -------------------------
2. Then Wildfly calls the on success observer
Thread [default task-12] (Suspended (breakpoint at line 55 in wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade))
owns: java.lang.Object (id=511)
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: 55
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 52
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.delegateInterception(javax.interceptor.InvocationContext, javax.enterprise.inject.spi.InterceptionType, java.util.List<javax.enterprise.inject.spi.Interceptor<?>>, org.jboss.as.weld.ejb.WeldInterceptorInstances) line: 70
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(javax.interceptor.InvocationContext, javax.enterprise.inject.spi.InterceptionType, org.jboss.as.weld.ejb.WeldInterceptorInstances, org.jboss.weld.ejb.spi.InterceptorBindings) line: 80
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 93
org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 63
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
inteceptor.FacadeInterceptor(inteceptor.GenericLoggingInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 68
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 89
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor(org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 64
org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 83
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 45
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InitialInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 21
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 52
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.singleton.SingletonComponentInstanceAssociationInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 53
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 275
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 344
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.ejb3.concurrency.ContainerManagedConcurrencyInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 110
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$$$view12.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$Proxy$_$$_Weld$EnterpriseProxy$.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object[], java.lang.Class<? extends java.lang.RuntimeException>) line: 88
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>, java.lang.Class<? extends java.lang.RuntimeException>) line: 78
org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(java.lang.Object, org.jboss.weld.injection.MethodInjectionPoint<?,?>, T, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>) line: 129
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T, java.lang.Object, javax.enterprise.context.spi.CreationalContext<?>) line: 309
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T) line: 287
org.jboss.weld.event.ObserverMethodImpl<T,X>.notify(T) line: 265
org.jboss.weld.event.DeferredEventNotification$1.execute() line: 69
org.jboss.weld.event.DeferredEventNotification$1(org.jboss.weld.event.DeferredEventNotification$RunInRequest).run() line: 101
org.jboss.weld.event.DeferredEventNotification<T>.run() line: 75
org.jboss.weld.event.TransactionSynchronizedRunnable.afterCompletion(int) line: 54
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 349
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$$$view1.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 658
io.undertow.servlet.handlers.ServletHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 85
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 62
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 36
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 78
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 131
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 57
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler(io.undertow.security.handlers.AbstractConfidentialityHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 46
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 64
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 60
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 77
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 50
io.undertow.security.handlers.SecurityInitialHandler(io.undertow.security.handlers.AbstractSecurityContextAssociationHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 61
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletChain, io.undertow.servlet.handlers.ServletRequestContext, javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 284
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 263
io.undertow.servlet.handlers.ServletInitialHandler.access$000(io.undertow.servlet.handlers.ServletInitialHandler, io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 81
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(io.undertow.server.HttpServerExchange) line: 174
io.undertow.server.Connectors.executeRootHandler(io.undertow.server.HttpHandler, io.undertow.server.HttpServerExchange) line: 202
io.undertow.server.HttpServerExchange$1.run() line: 793
org.xnio.XnioWorker$TaskPool(java.util.concurrent.ThreadPoolExecutor).runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) line: 1142
java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 617
java.lang.Thread.run() line: 745
-- -------------------------
-- MOMENT 3: The breakpoint on eclipselink gets hit (one of the two JTA transactions is getting merged to the server session cahce)
-- -------------------------
3. Then Wildfly invokes the mrege changes into parent for one of the two transactions:
Thread [default task-12] (Suspended (breakpoint at line 371 in org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork))
owns: java.lang.Object (id=624)
owns: java.lang.Object (id=511)
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeChangesIntoParent() line: 371
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl).mergeClonesAfterCompletion() line: 3412
org.eclipse.persistence.transaction.JTASynchronizationListener(org.eclipse.persistence.transaction.AbstractSynchronizationListener).afterCompletion(java.lang.Object) line: 217
org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(int) line: 79
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
NOTE:
Without knowing the code that SynchronizationImple.afterCompletion(int) line: 96 has
it would appear that the code might be a FOR loop over some sort afterCompletionSubscriber.
And the bug would be the order by which the subscribers get executed.
namely, it would appear that we are invoking the publish after compliton to CDI EJB observers before
the JTA synchronization to the cache.
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 344
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.ejb3.concurrency.ContainerManagedConcurrencyInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 110
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$$$view12.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$Proxy$_$$_Weld$EnterpriseProxy$.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object[], java.lang.Class<? extends java.lang.RuntimeException>) line: 88
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>, java.lang.Class<? extends java.lang.RuntimeException>) line: 78
org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(java.lang.Object, org.jboss.weld.injection.MethodInjectionPoint<?,?>, T, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>) line: 129
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T, java.lang.Object, javax.enterprise.context.spi.CreationalContext<?>) line: 309
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T) line: 287
org.jboss.weld.event.ObserverMethodImpl<T,X>.notify(T) line: 265
org.jboss.weld.event.DeferredEventNotification$1.execute() line: 69
org.jboss.weld.event.DeferredEventNotification$1(org.jboss.weld.event.DeferredEventNotification$RunInRequest).run() line: 101
org.jboss.weld.event.DeferredEventNotification<T>.run() line: 75
org.jboss.weld.event.TransactionSynchronizedRunnable.afterCompletion(int) line: 54
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 349
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$$$view1.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 658
io.undertow.servlet.handlers.ServletHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 85
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 62
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 36
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 78
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 131
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 57
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler(io.undertow.security.handlers.AbstractConfidentialityHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 46
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 64
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 60
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 77
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 50
io.undertow.security.handlers.SecurityInitialHandler(io.undertow.security.handlers.AbstractSecurityContextAssociationHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 61
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletChain, io.undertow.servlet.handlers.ServletRequestContext, javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 284
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 263
io.undertow.servlet.handlers.ServletInitialHandler.access$000(io.undertow.servlet.handlers.ServletInitialHandler, io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 81
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(io.undertow.server.HttpServerExchange) line: 174
io.undertow.server.Connectors.executeRootHandler(io.undertow.server.HttpHandler, io.undertow.server.HttpServerExchange) line: 202
io.undertow.server.HttpServerExchange$1.run() line: 793
org.xnio.XnioWorker$TaskPool(java.util.concurrent.ThreadPoolExecutor).runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) line: 1142
java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 617
java.lang.Thread.run() line: 745
4. Finally it merges changes into parent for the second transaction
Thread [default task-12] (Suspended (breakpoint at line 371 in org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork))
owns: java.lang.Object (id=511)
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeChangesIntoParent() line: 371
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl).mergeClonesAfterCompletion() line: 3412
org.eclipse.persistence.transaction.JTASynchronizationListener(org.eclipse.persistence.transaction.AbstractSynchronizationListener).afterCompletion(java.lang.Object) line: 217
org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(int) line: 79
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 349
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$$$view1.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 658
io.undertow.servlet.handlers.ServletHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 85
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 62
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 36
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 78
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 131
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 57
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler(io.undertow.security.handlers.AbstractConfidentialityHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 46
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 64
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 60
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 77
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 50
io.undertow.security.handlers.SecurityInitialHandler(io.undertow.security.handlers.AbstractSecurityContextAssociationHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 61
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletChain, io.undertow.servlet.handlers.ServletRequestContext, javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 284
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 263
io.undertow.servlet.handlers.ServletInitialHandler.access$000(io.undertow.servlet.handlers.ServletInitialHandler, io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 81
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(io.undertow.server.HttpServerExchange) line: 174
io.undertow.server.Connectors.executeRootHandler(io.undertow.server.HttpHandler, io.undertow.server.HttpServerExchange) line: 202
io.undertow.server.HttpServerExchange$1.run() line: 793
org.xnio.XnioWorker$TaskPool(java.util.concurrent.ThreadPoolExecutor).runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) line: 1142
java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 617
java.lang.Thread.run() line: 745
{panel}
Many thanks for your help.
My kindest regards.
was (Author: nuno.godinhomatos):
Hi,
I have now launche the sample application on both application servers, and tested the triggering to event B on both app servers. The event B, is the one where the observer of event B is a @Singleton @TransactioAsttirbute requires new.
My impresison, is that the bug is not in the "com.arjuna" but rather on the wildfly/jboss registration of onsuccess oberservers into this adapter, to determine what should happen during on succes.
But here I am going a bit to far on my analysis, since I am not really sure how exactly these different components glue together. But as you will see in the stack traces posted bellow, the arjuna code seems to be doing some sort of generic loop invoking oncusscess obverserves.
And it just so happens to appear that arjuna is first invoking the CDI / EJB on success event publisher and only later the eclipse link sessiong synchronizer code.
But I leave to you guys the actual conclusion on the bug, I believe these stack traces have everything in there to point the bug and the above is just my impression / but since I have never written container code it is all I can offer.
OK so first we start with the stack traces for weblogic:
On weblogic I put two stack traces.
1. The first stack trace is my break point the eclipselink RepeatableWriteUnitOfWork.mergeToParent() getting called.
2. The second trace corresponds to my second break point getting hit, which is the business logic for the observes event.
The above stack traces are perfectly in line to theory we have discussed above.
And it makes perfect logic sense. First weblogic commits and synchronizies the server session cache. Then it calls our on success business logic.
{panel}
-- -------------------------
-- MOMENT 1: clicking on the web page to trigger event B
-- -------------------------
1 CLICK EVENT B
-- -------------------------
-- MOMENT 2: The break point in the RepeatableWriteUnitOfWorkMerge to parent gets hit (it is around here that mreging to server session will be taking place)
-- -------------------------
2. Repeatable write unti of work merge chages into parent:
Daemon Thread [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] (Suspended (breakpoint at line 371 in org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork))
owns: weblogic.transaction.internal.ServerSCInfo (id=269)
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl).mergeClonesAfterCompletion() line: 3412
org.eclipse.persistence.transaction.JTASynchronizationListener(org.eclipse.persistence.transaction.AbstractSynchronizationListener).afterCompletion(java.lang.Object) line: 217
org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(int) line: 79
weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(javax.transaction.Synchronization, int, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.invocation.ComponentInvocationContext) line: 1254
weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(int, weblogic.transaction.internal.TransactionImpl) line: 1225
weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions() line: 3630
weblogic.transaction.internal.ServerTransactionImpl.afterCommittedStateHousekeeping() line: 3527
weblogic.transaction.internal.ServerTransactionImpl.setCommitted() line: 3573
weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(int, int, int) line: 3297
weblogic.transaction.internal.ServerTransactionImpl.globalCommit(int) line: 3197
weblogic.transaction.internal.ServerTransactionImpl.internalCommit() line: 309
weblogic.transaction.internal.ServerTransactionImpl.commit() line: 257
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).postInvoke1(int, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 316
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).__WL_postInvokeTxRetry(weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 195
weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(weblogic.ejb.container.interfaces.Invokable, weblogic.ejb.container.internal.BaseLocalObject, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Object[], int) line: 46
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade_uskw20_NoIntfViewImpl.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 650
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 286
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 260
-- ------------------------- -- -------------------------
-- MOMENT 3: Breakpoint on observer gets hit the server sesison cache already holds the changes
-- -------------------------
3. - On Success observer:
Daemon Thread [[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'] (Suspended (breakpoint at line 55 in wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade))
owns: weblogic.transaction.internal.ServerSCInfo (id=237)
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade_y0uz1i_Impl(wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade).observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: 55
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 310
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint() line: 182
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 149
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed() line: 101
inteceptor.FacadeInterceptor(inteceptor.GenericLoggingInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 93
sun.reflect.GeneratedMethodAccessor402.invoke(java.lang.Object, java.lang.Object[]) line: not available
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 94
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed() line: 101
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 101
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed() line: 101
org.jboss.weld.ejb.SessionBeanInterceptor(org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 64
org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(javax.interceptor.InvocationContext) line: 52
sun.reflect.GeneratedMethodAccessor144.invoke(java.lang.Object, java.lang.Object[]) line: not available
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 94
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 131
com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(com.bea.core.repackaged.aopalliance.intercept.MethodInvocation) line: 119
com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed() line: 171
com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 215
com.sun.proxy.$Proxy368.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade_y0uz1i_NoIntfViewImpl.__WL_invoke(java.lang.Object, java.lang.Object[], int) line: not available
weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(weblogic.ejb.container.interfaces.Invokable, weblogic.ejb.container.internal.BaseLocalObject, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Object[], int) line: 33
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade_y0uz1i_NoIntfViewImpl.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$Proxy$_$$_Weld$EnterpriseProxy$.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object[], java.lang.Class<? extends java.lang.RuntimeException>) line: 88
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>, java.lang.Class<? extends java.lang.RuntimeException>) line: 78
org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(java.lang.Object, org.jboss.weld.injection.MethodInjectionPoint<?,?>, T, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>) line: 129
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T, java.lang.Object, javax.enterprise.context.spi.CreationalContext<?>) line: 309
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T) line: 287
org.jboss.weld.event.ObserverMethodImpl<T,X>.notify(T) line: 265
org.jboss.weld.event.DeferredEventNotification$1.execute() line: 69
org.jboss.weld.event.DeferredEventNotification$1(org.jboss.weld.event.DeferredEventNotification$RunInRequest).run() line: 101
org.jboss.weld.event.DeferredEventNotification<T>.run() line: 75
org.jboss.weld.event.TransactionSynchronizedRunnable.afterCompletion(int) line: 54
weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(javax.transaction.Synchronization, int, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.security.acl.internal.AuthenticatedSubject, weblogic.invocation.ComponentInvocationContext) line: 1254
weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(int, weblogic.transaction.internal.TransactionImpl) line: 1225
weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions() line: 3630
weblogic.transaction.internal.ServerTransactionImpl.afterCommittedStateHousekeeping() line: 3527
weblogic.transaction.internal.ServerTransactionImpl.setCommitted() line: 3573
weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(int, int, int) line: 3297
weblogic.transaction.internal.ServerTransactionImpl.globalCommit(int) line: 3197
weblogic.transaction.internal.ServerTransactionImpl.internalCommit() line: 309
weblogic.transaction.internal.ServerTransactionImpl.commit() line: 257
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).postInvoke1(int, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 316
weblogic.ejb.container.internal.StatelessLocalObject(weblogic.ejb.container.internal.BaseLocalObject).__WL_postInvokeTxRetry(weblogic.ejb.container.internal.InvocationWrapper, java.lang.Throwable) line: 195
weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(weblogic.ejb.container.interfaces.Invokable, weblogic.ejb.container.internal.BaseLocalObject, weblogic.ejb.container.internal.InvocationWrapper, java.lang.Object[], int) line: 46
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade_uskw20_NoIntfViewImpl.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 650
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 286
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run() line: 260
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(javax.servlet.ServletRequest, javax.servlet.http.HttpServletRequest, weblogic.servlet.internal.ServletRequestImpl, javax.servlet.ServletResponse, javax.servlet.http.HttpServletResponse, javax.servlet.Servlet) line: 137
weblogic.servlet.internal.ServletStubImpl.execute(javax.servlet.ServletRequest, javax.servlet.ServletResponse, weblogic.servlet.internal.FilterChainImpl) line: 350
weblogic.servlet.internal.TailFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) line: 25
weblogic.servlet.internal.FilterChainImpl.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 78
weblogic.servlet.internal.RequestEventsFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) line: 32
weblogic.servlet.internal.FilterChainImpl.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 78
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(weblogic.servlet.internal.ServletStub, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) line: 3683
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run() line: 3649
weblogic.security.acl.internal.AuthenticatedSubject.doAs(weblogic.security.subject.AbstractSubject, java.security.PrivilegedAction) line: 326
weblogic.security.service.SecurityManager.runAsForUserCode(weblogic.security.acl.internal.AuthenticatedSubject, weblogic.security.acl.internal.AuthenticatedSubject, java.security.PrivilegedAction<T>) line: 197
weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(weblogic.security.acl.internal.AuthenticatedSubject, java.security.PrivilegedAction, weblogic.security.acl.internal.AuthenticatedSubject) line: 203
weblogic.servlet.provider.WlsSubjectHandle.run(java.security.PrivilegedAction) line: 71
weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(weblogic.servlet.internal.ServletInvocationContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean, boolean, boolean) line: 2433
weblogic.servlet.internal.WebAppServletContext.securedExecute(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, boolean) line: 2281
weblogic.servlet.internal.WebAppServletContext.execute(weblogic.servlet.internal.ServletRequestImpl, weblogic.servlet.internal.ServletResponseImpl) line: 2259
weblogic.servlet.internal.ServletRequestImpl.runInternal() line: 1691
weblogic.servlet.internal.ServletRequestImpl.run() line: 1651
weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run() line: 270
weblogic.invocation.ComponentInvocationContextManager._runAs(weblogic.invocation.ComponentInvocationContext, java.lang.Runnable) line: 348
weblogic.invocation.ComponentInvocationContextManager.runAs(java.security.Principal, weblogic.invocation.ComponentInvocationContext, java.lang.Runnable) line: 333
weblogic.work.LivePartitionUtility.doRunWorkUnderContext(java.lang.Runnable, weblogic.invocation.ComponentInvocationContext) line: 54
weblogic.work.PartitionUtility.runWorkUnderContext(java.lang.Runnable, weblogic.invocation.ComponentInvocationContext) line: 41
weblogic.work.ServerWorkManagerImpl(weblogic.work.SelfTuningWorkManagerImpl).runWorkUnderContext(weblogic.work.ExecuteThread, weblogic.work.WorkAdapter) line: 640
weblogic.work.ExecuteThread.execute(weblogic.work.WorkAdapter) line: 406
weblogic.work.ExecuteThread.run() line: 346
{panel}
Now on Wildfly, the stack traces also follow the theory above. So the order by which our break points get hit is reversed.
1. The first break point that gets hit is the break point we put on success obversvation.
2. The second break point that gets hit is when eclipselink is doing the RepeatbleWriteUnit of work merge to parent.
3. I also add third stack trace that corresponds to the same break point on eclipselink getting hit a second time. This happens because we have two JTA transactions that commit. The original business transaction and the observer on success transaction.
So what went wrong is that our break point on point (2) was not hit before the break point on the success obverver.
Finally, since in these break points the arjuna code seems to be delegating to the container the respnsability of handling on succes:
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
we can imagine that this code here is a generic piece of code invoking some command like invoation or subscriber like notification , and the problem would be the order by which the subscribers/commands are ordered in the loop.
Here are the stack traces for wildfly:
{panel}
WILDFLY:
-- -------------------------
-- MOMENT 1: clicking on the web page to trigger event B
-- -------------------------
-- -------------------------
-- MOMENT 2: The break point on the observers event gets hit (we have a bug our merge breakpoint should have been hit)
-- -------------------------
2. Then Wildfly calls the on success observer
Thread [default task-12] (Suspended (breakpoint at line 55 in wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade))
owns: java.lang.Object (id=511)
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: 55
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 52
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.delegateInterception(javax.interceptor.InvocationContext, javax.enterprise.inject.spi.InterceptionType, java.util.List<javax.enterprise.inject.spi.Interceptor<?>>, org.jboss.as.weld.ejb.WeldInterceptorInstances) line: 70
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(javax.interceptor.InvocationContext, javax.enterprise.inject.spi.InterceptionType, org.jboss.as.weld.ejb.WeldInterceptorInstances, org.jboss.weld.ejb.spi.InterceptorBindings) line: 80
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 93
org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 63
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
inteceptor.FacadeInterceptor(inteceptor.GenericLoggingInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 68
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 89
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor(org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor).aroundInvoke(javax.interceptor.InvocationContext) line: 64
org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 83
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 45
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InitialInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 21
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 52
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.singleton.SingletonComponentInstanceAssociationInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 53
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 275
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 344
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.ejb3.concurrency.ContainerManagedConcurrencyInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 110
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$$$view12.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$Proxy$_$$_Weld$EnterpriseProxy$.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object[], java.lang.Class<? extends java.lang.RuntimeException>) line: 88
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>, java.lang.Class<? extends java.lang.RuntimeException>) line: 78
org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(java.lang.Object, org.jboss.weld.injection.MethodInjectionPoint<?,?>, T, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>) line: 129
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T, java.lang.Object, javax.enterprise.context.spi.CreationalContext<?>) line: 309
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T) line: 287
org.jboss.weld.event.ObserverMethodImpl<T,X>.notify(T) line: 265
org.jboss.weld.event.DeferredEventNotification$1.execute() line: 69
org.jboss.weld.event.DeferredEventNotification$1(org.jboss.weld.event.DeferredEventNotification$RunInRequest).run() line: 101
org.jboss.weld.event.DeferredEventNotification<T>.run() line: 75
org.jboss.weld.event.TransactionSynchronizedRunnable.afterCompletion(int) line: 54
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 349
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$$$view1.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 658
io.undertow.servlet.handlers.ServletHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 85
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 62
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 36
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 78
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 131
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 57
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler(io.undertow.security.handlers.AbstractConfidentialityHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 46
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 64
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 60
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 77
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 50
io.undertow.security.handlers.SecurityInitialHandler(io.undertow.security.handlers.AbstractSecurityContextAssociationHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 61
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletChain, io.undertow.servlet.handlers.ServletRequestContext, javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 284
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 263
io.undertow.servlet.handlers.ServletInitialHandler.access$000(io.undertow.servlet.handlers.ServletInitialHandler, io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 81
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(io.undertow.server.HttpServerExchange) line: 174
io.undertow.server.Connectors.executeRootHandler(io.undertow.server.HttpHandler, io.undertow.server.HttpServerExchange) line: 202
io.undertow.server.HttpServerExchange$1.run() line: 793
org.xnio.XnioWorker$TaskPool(java.util.concurrent.ThreadPoolExecutor).runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) line: 1142
java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 617
java.lang.Thread.run() line: 745
-- -------------------------
-- MOMENT 3: The breakpoint on eclipselink gets hit (one of the two JTA transactions is getting merged to the server session cahce)
-- -------------------------
3. Then Wildfly invokes the mrege changes into parent for one of the two transactions:
Thread [default task-12] (Suspended (breakpoint at line 371 in org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork))
owns: java.lang.Object (id=624)
owns: java.lang.Object (id=511)
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeChangesIntoParent() line: 371
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl).mergeClonesAfterCompletion() line: 3412
org.eclipse.persistence.transaction.JTASynchronizationListener(org.eclipse.persistence.transaction.AbstractSynchronizationListener).afterCompletion(java.lang.Object) line: 217
org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(int) line: 79
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
NOTE:
Without knowing the code that SynchronizationImple.afterCompletion(int) line: 96 has
it would appear that the code might be a FOR loop over some sort afterCompletionSubscriber.
And the bug would be the order by which the subscribers get executed.
namely, it would appear that we are invoking the publish after compliton to CDI EJB observers before
the JTA synchronization to the cache.
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 344
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext$Invocation.proceed() line: 437
org.jboss.as.ejb3.concurrency.ContainerManagedConcurrencyInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 110
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$$$view12.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.SomeEntityChangeEventObserverBFacade$Proxy$_$$_Weld$EnterpriseProxy$.observeEvent(wildfly.bug.onsuccess.event.SomeEntityChangeBEvent) line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object[], java.lang.Class<? extends java.lang.RuntimeException>) line: 88
org.jboss.weld.injection.VirtualMethodInjectionPoint<T,X>(org.jboss.weld.injection.StaticMethodInjectionPoint<T,X>).invoke(java.lang.Object, java.lang.Object, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>, java.lang.Class<? extends java.lang.RuntimeException>) line: 78
org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(java.lang.Object, org.jboss.weld.injection.MethodInjectionPoint<?,?>, T, org.jboss.weld.manager.BeanManagerImpl, javax.enterprise.context.spi.CreationalContext<?>) line: 129
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T, java.lang.Object, javax.enterprise.context.spi.CreationalContext<?>) line: 309
org.jboss.weld.event.ObserverMethodImpl<T,X>.sendEvent(T) line: 287
org.jboss.weld.event.ObserverMethodImpl<T,X>.notify(T) line: 265
org.jboss.weld.event.DeferredEventNotification$1.execute() line: 69
org.jboss.weld.event.DeferredEventNotification$1(org.jboss.weld.event.DeferredEventNotification$RunInRequest).run() line: 101
org.jboss.weld.event.DeferredEventNotification<T>.run() line: 75
org.jboss.weld.event.TransactionSynchronizedRunnable.afterCompletion(int) line: 54
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 349
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$$$view1.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 658
io.undertow.servlet.handlers.ServletHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 85
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 62
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 36
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 78
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 131
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 57
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler(io.undertow.security.handlers.AbstractConfidentialityHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 46
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 64
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 60
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 77
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 50
io.undertow.security.handlers.SecurityInitialHandler(io.undertow.security.handlers.AbstractSecurityContextAssociationHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 61
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletChain, io.undertow.servlet.handlers.ServletRequestContext, javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 284
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 263
io.undertow.servlet.handlers.ServletInitialHandler.access$000(io.undertow.servlet.handlers.ServletInitialHandler, io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 81
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(io.undertow.server.HttpServerExchange) line: 174
io.undertow.server.Connectors.executeRootHandler(io.undertow.server.HttpHandler, io.undertow.server.HttpServerExchange) line: 202
io.undertow.server.HttpServerExchange$1.run() line: 793
org.xnio.XnioWorker$TaskPool(java.util.concurrent.ThreadPoolExecutor).runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) line: 1142
java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 617
java.lang.Thread.run() line: 745
4. Finally it merges changes into parent for the second transaction
Thread [default task-12] (Suspended (breakpoint at line 371 in org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork))
owns: java.lang.Object (id=511)
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeChangesIntoParent() line: 371
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl).mergeClonesAfterCompletion() line: 3412
org.eclipse.persistence.transaction.JTASynchronizationListener(org.eclipse.persistence.transaction.AbstractSynchronizationListener).afterCompletion(java.lang.Object) line: 217
org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(int) line: 79
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(int) line: 96
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).afterCompletion(int, boolean) line: 545
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator).end(boolean) line: 101
com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction(com.arjuna.ats.arjuna.AtomicAction).commit(boolean) line: 162
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate() line: 1200
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple(com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction).commit() line: 126
com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate(com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate).commit() line: 89
org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(javax.transaction.TransactionManager, javax.transaction.Transaction) line: 91
org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(org.jboss.invocation.InterceptorContext, javax.transaction.TransactionManager, org.jboss.as.ejb3.component.EJBComponent) line: 279
org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(org.jboss.invocation.InterceptorContext, org.jboss.as.ejb3.component.EJBComponent, int) line: 349
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 241
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 41
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 43
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 100
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 66
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 50
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 54
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 64
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.wildfly.security.manager.WildFlySecurityManager.doChecked(java.security.PrivilegedExceptionAction<T>) line: 636
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.InterceptorContext.run() line: 356
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 80
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ViewService$View.invoke(org.jboss.invocation.InterceptorContext) line: 195
org.jboss.as.ee.component.ViewDescription$1.processInvocation(org.jboss.invocation.InterceptorContext) line: 185
org.jboss.invocation.InterceptorContext.proceed() line: 340
org.jboss.invocation.ChainedInterceptor.processInvocation(org.jboss.invocation.InterceptorContext) line: 61
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 73
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$$$view1.modifyEntityAndFireEventB() line: not available
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 436
org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler<T>.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 127
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance(org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 56
org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object...) line: 67
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) line: 100
wildfly.bug.onsuccess.facade.ModifyEntityAndFireEventFacade$Proxy$_$$_Weld$EnterpriseProxy$.modifyEntityAndFireEventB() line: not available
entrypoint.web.SystemTestBean.fireSomeEntityChangeBEvent() line: 70
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 62
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 43
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 498
com.sun.el.util.ReflectionUtil.invokeMethod(javax.el.ELContext, java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: 181
com.sun.el.parser.AstValue.invoke(com.sun.el.lang.EvaluationContext, java.lang.Class[], java.lang.Object[]) line: 289
com.sun.el.MethodExpressionImpl.invoke(javax.el.ELContext, java.lang.Object[]) line: 304
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
org.jboss.weld.el.WeldMethodExpression(org.jboss.weld.util.el.ForwardingMethodExpression).invoke(javax.el.ELContext, java.lang.Object[]) line: 40
org.jboss.weld.el.WeldMethodExpression.invoke(javax.el.ELContext, java.lang.Object[]) line: 50
javax.faces.event.MethodExpressionActionListener.processAction(javax.faces.event.ActionEvent) line: 149
javax.faces.event.ActionEvent.processListener(javax.faces.event.FacesListener) line: 88
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UIComponentBase).broadcast(javax.faces.event.FacesEvent) line: 814
org.primefaces.component.commandbutton.CommandButton(javax.faces.component.UICommand).broadcast(javax.faces.event.FacesEvent) line: 300
javax.faces.component.UIViewRoot.broadcastEvents(javax.faces.context.FacesContext, javax.faces.event.PhaseId) line: 790
javax.faces.component.UIViewRoot.processApplication(javax.faces.context.FacesContext) line: 1282
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(javax.faces.context.FacesContext) line: 81
com.sun.faces.lifecycle.InvokeApplicationPhase(com.sun.faces.lifecycle.Phase).doPhase(javax.faces.context.FacesContext, javax.faces.lifecycle.Lifecycle, java.util.ListIterator<javax.faces.event.PhaseListener>) line: 101
com.sun.faces.lifecycle.LifecycleImpl.execute(javax.faces.context.FacesContext) line: 198
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(javax.faces.context.FacesContext) line: 89
org.apache.deltaspike.jsf.impl.listener.request.JsfClientWindowAwareLifecycleWrapper(javax.faces.lifecycle.LifecycleWrapper).execute(javax.faces.context.FacesContext) line: 77
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 658
io.undertow.servlet.handlers.ServletHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 85
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 62
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 36
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 78
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 131
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 57
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler(io.undertow.security.handlers.AbstractConfidentialityHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 46
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 64
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 60
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 77
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 50
io.undertow.security.handlers.SecurityInitialHandler(io.undertow.security.handlers.AbstractSecurityContextAssociationHandler).handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 61
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.server.handlers.PredicateHandler.handleRequest(io.undertow.server.HttpServerExchange) line: 43
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletChain, io.undertow.servlet.handlers.ServletRequestContext, javax.servlet.ServletRequest, javax.servlet.ServletResponse) line: 284
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 263
io.undertow.servlet.handlers.ServletInitialHandler.access$000(io.undertow.servlet.handlers.ServletInitialHandler, io.undertow.server.HttpServerExchange, io.undertow.servlet.handlers.ServletRequestContext, io.undertow.servlet.handlers.ServletChain, javax.servlet.DispatcherType) line: 81
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(io.undertow.server.HttpServerExchange) line: 174
io.undertow.server.Connectors.executeRootHandler(io.undertow.server.HttpHandler, io.undertow.server.HttpServerExchange) line: 202
io.undertow.server.HttpServerExchange$1.run() line: 793
org.xnio.XnioWorker$TaskPool(java.util.concurrent.ThreadPoolExecutor).runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) line: 1142
java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 617
java.lang.Thread.run() line: 745
{panel}
> Wildfly 10 with eclipselink Onscucess observer gets stale entity
> ----------------------------------------------------------------
>
> Key: WFLY-8954
> URL: https://issues.jboss.org/browse/WFLY-8954
> Project: WildFly
> Issue Type: Bug
> Components: JPA / Hibernate
> Affects Versions: 10.0.0.Final
> Reporter: Nuno Godinho de Matos
> Assignee: Scott Marlow
>
> Hi,
> In widlfly there seems to be an important issue concerning CDI events and observing these events during onsuccess. At least while using eclipselink.
> When using wildfly 10.0.0.Final together with eclipselink, if an application modifies an entity A, fires an event stating entity A has been modified, and an observer consumes this event during transaction success.
> Then the observer will be working with stale entities that do not reflect the modifications done to the entity.
> A sample application for this issue is available in:
> https://github.com/99sono/wildfly10-observe-on-success-stale-entity
> The widlfly configuration xml for the sample application, is available in the application itself, as can be seen in the readme documentation.
> Many thanks for taking a look.
> Kindest regards.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the jboss-jira
mailing list