[jboss-jira] [JBoss JIRA] (WFLY-11360) JCAOrderedLastSynchronizationList shouldn't be skipped for org.wildfly.transaction.client.ContextTransactionSynchronizationRegistry registered Synchronizations

Scott Marlow (Jira) issues at jboss.org
Thu Nov 15 10:45:00 EST 2018


     [ https://issues.jboss.org/browse/WFLY-11360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Scott Marlow updated WFLY-11360:
--------------------------------
    Description: 
JPA container synchronizations are not registered via JCAOrderedLastSynchronizationList, which means that JCA Synchronization#afterCompletion will not always run after JPA Synchronization#afterCompletion.

Call stack below shows the JPA sync being registered:
{code}
<init>:57, SynchronizationImple (com.arjuna.ats.internal.jta.resources.arjunacore)
registerSynchronization:74, TransactionUtil (org.jboss.as.jpa.transaction)
getOrCreateTransactionScopedEntityManager:162, TransactionScopedEntityManager (org.jboss.as.jpa.container)
getEntityManager:87, TransactionScopedEntityManager (org.jboss.as.jpa.container)
persist:580, AbstractEntityManager (org.jboss.as.jpa.container)
addEmployee:211, SLSB1 (org.jboss.as.test.integration.jpa.transaction)
processInvocation:52, ManagedReferenceMethodInterceptor (org.jboss.as.ee.component)
doMethodInterception:90, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:101, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:63, UserInterceptorFactory$1 (org.jboss.as.ee.component.interceptors)
processInvocation:43, ExecutionTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:47, SBInvocationInterceptor (org.jboss.as.jpa.interceptor)
handleInvocation:103, EjbBMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:58, BMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:45, ConcurrentContextInterceptor (org.jboss.as.ee.concurrent)
processInvocation:52, ComponentDispatcherInterceptor (org.jboss.as.ee.component.interceptors)
processInvocation:51, PooledInstanceInterceptor (org.jboss.as.ejb3.component.pool)
processInvocation:54, AdditionalSetupInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:89, EjbRequestScopeActivationInterceptor (org.jboss.as.weld.ejb)
processInvocation:41, CurrentInvocationContextInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:47, WaitTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:100, SecurityContextInterceptor (org.jboss.as.ejb3.security)
processInvocation:22, StartupAwaitInterceptor (org.jboss.as.ejb3.deployment.processors)
processInvocation:64, ShutDownInterceptorFactory$1 (org.jboss.as.ejb3.component.interceptors)
processInvocation:67, LoggingInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:50, NamespaceContextInterceptor (org.jboss.as.ee.component)
invoke:198, ViewService$View (org.jboss.as.ee.component)
processInvocation:185, ViewDescription$1 (org.jboss.as.ee.component)
invoke:81, ProxyInvocationHandler (org.jboss.as.ee.component)
addEmployee:-1, SLSB1$$$view6 (org.jboss.as.test.integration.jpa.transaction)
testFailInDAOCalls:159, TransactionTestCase (org.jboss.as.test.integration.jpa.transaction)
{code}

Call stack below shows the JCA synchronization is registered correctly via JCAOrderedLastSynchronizationList:
{code}
<init>:57, SynchronizationImple (com.arjuna.ats.internal.jta.resources.arjunacore)
getConnection:64, WildFlyDataSource (org.jboss.as.connector.subsystems.datasources)
beforeCompletion:113, JCAOrderedLastSynchronizationList (org.jboss.as.txn.service.internal.tsr)
createEmployee:96, SFSB1 (org.jboss.as.test.integration.jpa.transaction)
processInvocation:52, ManagedReferenceMethodInterceptor (org.jboss.as.ee.component)
doMethodInterception:90, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:101, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:63, UserInterceptorFactory$1 (org.jboss.as.ee.component.interceptors)
processInvocation:43, ExecutionTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:47, SBInvocationInterceptor (org.jboss.as.jpa.interceptor)
processInvocation:57, SFSBInvocationInterceptor (org.jboss.as.jpa.interceptor)
handleInvocation:94, StatefulBMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:58, BMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:137, StatefulSessionSynchronizationInterceptor (org.jboss.as.ejb3.component.stateful)
processInvocation:45, ConcurrentContextInterceptor (org.jboss.as.ee.concurrent)
processInvocation:52, ComponentDispatcherInterceptor (org.jboss.as.ee.component.interceptors)
processInvocation:59, StatefulComponentInstanceInterceptor (org.jboss.as.ejb3.component.stateful)
processInvocation:54, AdditionalSetupInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:89, EjbRequestScopeActivationInterceptor (org.jboss.as.weld.ejb)
processInvocation:41, CurrentInvocationContextInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:47, WaitTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:100, SecurityContextInterceptor (org.jboss.as.ejb3.security)
processInvocation:22, StartupAwaitInterceptor (org.jboss.as.ejb3.deployment.processors)
processInvocation:64, ShutDownInterceptorFactory$1 (org.jboss.as.ejb3.component.interceptors)
processInvocation:67, LoggingInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:50, NamespaceContextInterceptor (org.jboss.as.ee.component)
invoke:198, ViewService$View (org.jboss.as.ee.component)
processInvocation:185, ViewDescription$1 (org.jboss.as.ee.component)
invoke:81, ProxyInvocationHandler (org.jboss.as.ee.component)
createEmployee:-1, SFSB1$$$view8 (org.jboss.as.test.integration.jpa.transaction)
testQueryNonTXTransactionalDetachIsDeferred:264, TransactionTestCase (org.jboss.as.test.integration.jpa.transaction)
{code}

  was:
JPA container synchronizations are not registered via JCAOrderedLastSynchronizationList, which means that JCA Synchronization#afterCompletion will not always run after JPA Synchronization#afterCompletion.

Call stack below shows the JPA sync being registered:
{code}
<init>:57, SynchronizationImple (com.arjuna.ats.internal.jta.resources.arjunacore)
registerSynchronization:74, TransactionUtil (org.jboss.as.jpa.transaction)
getOrCreateTransactionScopedEntityManager:162, TransactionScopedEntityManager (org.jboss.as.jpa.container)
getEntityManager:87, TransactionScopedEntityManager (org.jboss.as.jpa.container)
persist:580, AbstractEntityManager (org.jboss.as.jpa.container)
addEmployee:211, SLSB1 (org.jboss.as.test.integration.jpa.transaction)
processInvocation:52, ManagedReferenceMethodInterceptor (org.jboss.as.ee.component)
doMethodInterception:90, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:101, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:63, UserInterceptorFactory$1 (org.jboss.as.ee.component.interceptors)
processInvocation:43, ExecutionTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:47, SBInvocationInterceptor (org.jboss.as.jpa.interceptor)
handleInvocation:103, EjbBMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:58, BMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:45, ConcurrentContextInterceptor (org.jboss.as.ee.concurrent)
processInvocation:52, ComponentDispatcherInterceptor (org.jboss.as.ee.component.interceptors)
processInvocation:51, PooledInstanceInterceptor (org.jboss.as.ejb3.component.pool)
processInvocation:54, AdditionalSetupInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:89, EjbRequestScopeActivationInterceptor (org.jboss.as.weld.ejb)
processInvocation:41, CurrentInvocationContextInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:47, WaitTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:100, SecurityContextInterceptor (org.jboss.as.ejb3.security)
processInvocation:22, StartupAwaitInterceptor (org.jboss.as.ejb3.deployment.processors)
processInvocation:64, ShutDownInterceptorFactory$1 (org.jboss.as.ejb3.component.interceptors)
processInvocation:67, LoggingInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:50, NamespaceContextInterceptor (org.jboss.as.ee.component)
invoke:198, ViewService$View (org.jboss.as.ee.component)
processInvocation:185, ViewDescription$1 (org.jboss.as.ee.component)
invoke:81, ProxyInvocationHandler (org.jboss.as.ee.component)
addEmployee:-1, SLSB1$$$view6 (org.jboss.as.test.integration.jpa.transaction)
testFailInDAOCalls:159, TransactionTestCase (org.jboss.as.test.integration.jpa.transaction)
{code}

Call stack below shows the JCA synchronization also not registered via JCAOrderedLastSynchronizationList:
{code}
<init>:57, SynchronizationImple (com.arjuna.ats.internal.jta.resources.arjunacore)
getConnection:64, WildFlyDataSource (org.jboss.as.connector.subsystems.datasources)
beforeCompletion:113, JCAOrderedLastSynchronizationList (org.jboss.as.txn.service.internal.tsr)
createEmployee:96, SFSB1 (org.jboss.as.test.integration.jpa.transaction)
processInvocation:52, ManagedReferenceMethodInterceptor (org.jboss.as.ee.component)
doMethodInterception:90, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:101, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
processInvocation:63, UserInterceptorFactory$1 (org.jboss.as.ee.component.interceptors)
processInvocation:43, ExecutionTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:47, SBInvocationInterceptor (org.jboss.as.jpa.interceptor)
processInvocation:57, SFSBInvocationInterceptor (org.jboss.as.jpa.interceptor)
handleInvocation:94, StatefulBMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:58, BMTInterceptor (org.jboss.as.ejb3.tx)
processInvocation:137, StatefulSessionSynchronizationInterceptor (org.jboss.as.ejb3.component.stateful)
processInvocation:45, ConcurrentContextInterceptor (org.jboss.as.ee.concurrent)
processInvocation:52, ComponentDispatcherInterceptor (org.jboss.as.ee.component.interceptors)
processInvocation:59, StatefulComponentInstanceInterceptor (org.jboss.as.ejb3.component.stateful)
processInvocation:54, AdditionalSetupInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:89, EjbRequestScopeActivationInterceptor (org.jboss.as.weld.ejb)
processInvocation:41, CurrentInvocationContextInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:47, WaitTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
processInvocation:100, SecurityContextInterceptor (org.jboss.as.ejb3.security)
processInvocation:22, StartupAwaitInterceptor (org.jboss.as.ejb3.deployment.processors)
processInvocation:64, ShutDownInterceptorFactory$1 (org.jboss.as.ejb3.component.interceptors)
processInvocation:67, LoggingInterceptor (org.jboss.as.ejb3.component.interceptors)
processInvocation:50, NamespaceContextInterceptor (org.jboss.as.ee.component)
invoke:198, ViewService$View (org.jboss.as.ee.component)
processInvocation:185, ViewDescription$1 (org.jboss.as.ee.component)
invoke:81, ProxyInvocationHandler (org.jboss.as.ee.component)
createEmployee:-1, SFSB1$$$view8 (org.jboss.as.test.integration.jpa.transaction)
testQueryNonTXTransactionalDetachIsDeferred:264, TransactionTestCase (org.jboss.as.test.integration.jpa.transaction)
{code}



> JCAOrderedLastSynchronizationList shouldn't be skipped for org.wildfly.transaction.client.ContextTransactionSynchronizationRegistry registered Synchronizations
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WFLY-11360
>                 URL: https://issues.jboss.org/browse/WFLY-11360
>             Project: WildFly
>          Issue Type: Bug
>          Components: Transactions
>    Affects Versions: 15.0.0.Beta1
>            Reporter: Scott Marlow
>            Assignee: Scott Marlow
>            Priority: Major
>             Fix For: 15.0.0.CR1
>
>
> JPA container synchronizations are not registered via JCAOrderedLastSynchronizationList, which means that JCA Synchronization#afterCompletion will not always run after JPA Synchronization#afterCompletion.
> Call stack below shows the JPA sync being registered:
> {code}
> <init>:57, SynchronizationImple (com.arjuna.ats.internal.jta.resources.arjunacore)
> registerSynchronization:74, TransactionUtil (org.jboss.as.jpa.transaction)
> getOrCreateTransactionScopedEntityManager:162, TransactionScopedEntityManager (org.jboss.as.jpa.container)
> getEntityManager:87, TransactionScopedEntityManager (org.jboss.as.jpa.container)
> persist:580, AbstractEntityManager (org.jboss.as.jpa.container)
> addEmployee:211, SLSB1 (org.jboss.as.test.integration.jpa.transaction)
> processInvocation:52, ManagedReferenceMethodInterceptor (org.jboss.as.ee.component)
> doMethodInterception:90, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
> processInvocation:101, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
> processInvocation:63, UserInterceptorFactory$1 (org.jboss.as.ee.component.interceptors)
> processInvocation:43, ExecutionTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
> processInvocation:47, SBInvocationInterceptor (org.jboss.as.jpa.interceptor)
> handleInvocation:103, EjbBMTInterceptor (org.jboss.as.ejb3.tx)
> processInvocation:58, BMTInterceptor (org.jboss.as.ejb3.tx)
> processInvocation:45, ConcurrentContextInterceptor (org.jboss.as.ee.concurrent)
> processInvocation:52, ComponentDispatcherInterceptor (org.jboss.as.ee.component.interceptors)
> processInvocation:51, PooledInstanceInterceptor (org.jboss.as.ejb3.component.pool)
> processInvocation:54, AdditionalSetupInterceptor (org.jboss.as.ejb3.component.interceptors)
> processInvocation:89, EjbRequestScopeActivationInterceptor (org.jboss.as.weld.ejb)
> processInvocation:41, CurrentInvocationContextInterceptor (org.jboss.as.ejb3.component.interceptors)
> processInvocation:47, WaitTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
> processInvocation:100, SecurityContextInterceptor (org.jboss.as.ejb3.security)
> processInvocation:22, StartupAwaitInterceptor (org.jboss.as.ejb3.deployment.processors)
> processInvocation:64, ShutDownInterceptorFactory$1 (org.jboss.as.ejb3.component.interceptors)
> processInvocation:67, LoggingInterceptor (org.jboss.as.ejb3.component.interceptors)
> processInvocation:50, NamespaceContextInterceptor (org.jboss.as.ee.component)
> invoke:198, ViewService$View (org.jboss.as.ee.component)
> processInvocation:185, ViewDescription$1 (org.jboss.as.ee.component)
> invoke:81, ProxyInvocationHandler (org.jboss.as.ee.component)
> addEmployee:-1, SLSB1$$$view6 (org.jboss.as.test.integration.jpa.transaction)
> testFailInDAOCalls:159, TransactionTestCase (org.jboss.as.test.integration.jpa.transaction)
> {code}
> Call stack below shows the JCA synchronization is registered correctly via JCAOrderedLastSynchronizationList:
> {code}
> <init>:57, SynchronizationImple (com.arjuna.ats.internal.jta.resources.arjunacore)
> getConnection:64, WildFlyDataSource (org.jboss.as.connector.subsystems.datasources)
> beforeCompletion:113, JCAOrderedLastSynchronizationList (org.jboss.as.txn.service.internal.tsr)
> createEmployee:96, SFSB1 (org.jboss.as.test.integration.jpa.transaction)
> processInvocation:52, ManagedReferenceMethodInterceptor (org.jboss.as.ee.component)
> doMethodInterception:90, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
> processInvocation:101, Jsr299BindingsInterceptor (org.jboss.as.weld.interceptors)
> processInvocation:63, UserInterceptorFactory$1 (org.jboss.as.ee.component.interceptors)
> processInvocation:43, ExecutionTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
> processInvocation:47, SBInvocationInterceptor (org.jboss.as.jpa.interceptor)
> processInvocation:57, SFSBInvocationInterceptor (org.jboss.as.jpa.interceptor)
> handleInvocation:94, StatefulBMTInterceptor (org.jboss.as.ejb3.tx)
> processInvocation:58, BMTInterceptor (org.jboss.as.ejb3.tx)
> processInvocation:137, StatefulSessionSynchronizationInterceptor (org.jboss.as.ejb3.component.stateful)
> processInvocation:45, ConcurrentContextInterceptor (org.jboss.as.ee.concurrent)
> processInvocation:52, ComponentDispatcherInterceptor (org.jboss.as.ee.component.interceptors)
> processInvocation:59, StatefulComponentInstanceInterceptor (org.jboss.as.ejb3.component.stateful)
> processInvocation:54, AdditionalSetupInterceptor (org.jboss.as.ejb3.component.interceptors)
> processInvocation:89, EjbRequestScopeActivationInterceptor (org.jboss.as.weld.ejb)
> processInvocation:41, CurrentInvocationContextInterceptor (org.jboss.as.ejb3.component.interceptors)
> processInvocation:47, WaitTimeInterceptor (org.jboss.as.ejb3.component.invocationmetrics)
> processInvocation:100, SecurityContextInterceptor (org.jboss.as.ejb3.security)
> processInvocation:22, StartupAwaitInterceptor (org.jboss.as.ejb3.deployment.processors)
> processInvocation:64, ShutDownInterceptorFactory$1 (org.jboss.as.ejb3.component.interceptors)
> processInvocation:67, LoggingInterceptor (org.jboss.as.ejb3.component.interceptors)
> processInvocation:50, NamespaceContextInterceptor (org.jboss.as.ee.component)
> invoke:198, ViewService$View (org.jboss.as.ee.component)
> processInvocation:185, ViewDescription$1 (org.jboss.as.ee.component)
> invoke:81, ProxyInvocationHandler (org.jboss.as.ee.component)
> createEmployee:-1, SFSB1$$$view8 (org.jboss.as.test.integration.jpa.transaction)
> testQueryNonTXTransactionalDetachIsDeferred:264, TransactionTestCase (org.jboss.as.test.integration.jpa.transaction)
> {code}



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the jboss-jira mailing list