[jbossts-issues] [JBoss JIRA] (JBTM-2342) Add callbacks for thread-to-transaction association changes

Michael Musgrove (JIRA) issues at jboss.org
Fri Feb 20 07:53:50 EST 2015

Michael Musgrove created JBTM-2342:

             Summary: Add callbacks for thread-to-transaction association changes
                 Key: JBTM-2342
                 URL: https://issues.jboss.org/browse/JBTM-2342
             Project: JBoss Transaction Manager
          Issue Type: Feature Request
          Components: Application Server Integration
    Affects Versions: 5.0.4
            Reporter: Michael Musgrove
            Assignee: Michael Musgrove
             Fix For: 5.0.5

This feature calls for a mechanism to avoid issues around concurrent access to a JPA EM if a transaction times out. Currently EM cleanup happens in AC callbacks - if those callbacks happen on the application thread there is no issue but if they happen on the reaper thread then it is possible for the EM to be manipulated whilst the application is still using it.

The linked forum thread came up with 4 proposals to handle the problem:
# Reaper marks transaction as set rollback only: this solution has potentially insurmountable issues (eg JVM1 -> JVM2, JVM1 crashes, txn never gets commit/rollback called on it). In addition it would need to be configurable - some users want the reaper to do the timely rollback;
# WildFly wraps the TM/TSR and coordinates the running of all Synchronization callbacks. This solution is complex and does the AS have sufficient knowledge to coordinate callbacks correctly. Option 4 below is similar but the decision about what to do and when to do it is left in the hands of the relevant callbacks where the knowlege resides;
# Start a discussion on the JPA expert group to get certain thread unsafe Synchronization JPA callbacks used by EE container/Persistence providers changed. This is an option for the future;
# Trigger callbacks when the transaction is disassociated from a thread. For example, detaching any loaded entities and closing the EM can be done when all relevant callbacks, namely the afterCompletion callback (triggered on the reaper thread) and the txn disassociated callback (triggered on the application thread) have been seen.

This JIRA will implement option 4.

This message was sent by Atlassian JIRA

More information about the jbossts-issues mailing list