When Wildfly EJB timer finishes, the transaction is not fully
committed.
-------------------------------------------------------------------------
Key: WFLY-4844
URL:
https://issues.jboss.org/browse/WFLY-4844
Project: WildFly
Issue Type: Bug
Components: EJB
Affects Versions: 8.2.0.Final
Environment: Ubuntu and Mac
Reporter: xiaodong xie
Assignee: Stuart Douglas
Priority: Critical
Fix For: 10.0.0.Alpha6
When a Singleton EJB timer finishes, if the next run has already started but waiting on
the write lock of Singleton EJB, the next run won't see the changes committed by the
current run. So I assume when the EJB timers finishes, the transaction is not fully
committed, or it's the next run that starts too early.
Here is a test case that should be able to reproduce the issue we are facing.
https://github.com/xiaodong-xie/wildfly-singleton-timer
Here is my analysis of this issue:
The CMTTxInterceptor is applied before ContainerManagedConcurrencyInterceptor.
So when waiting for the write lock of EJBReadWriteLock, we've already started the
transaction, which IMHO is earlier than necessary.