[hibernate-dev] new proposal for tx timeout handling using transaction DISASSOCIATING event notification...

Scott Marlow smarlow at redhat.com
Mon Mar 9 14:19:48 EDT 2015


With a proposed TM level listener, we will have an SPI for notification 
of when application threads associated with a JTA transaction, become 
disassociated with the transaction (tm.commit/rollback/suspend time). 
Having this knowledge in a synchronization callback, can determine 
whether the persistence context should be cleared directly from the 
Synchronization.afterCompletion(int) call or should be deferred until 
the transaction is disassociated from the JTA transaction.

This idea is based on a TM level listener approach that Tom Jenkinson 
[1] suggested.  Mike Musgrove has a "proof of concept" implementation of 
the suggested changes [2].  I did some testing with [3] to see if the 
improvement helps with clearing entities that might still be in the 
persistence context after a background tx timeout.

I'm wondering if in the Hibernate ORM 
Synchronization.afterCompletion(int status) implementation, in case of 
tx rollback, if we could defer the clearing of the Hibernate session to 
be handled by the JtaPlatform.  This could be setup at 
EntityManager.joinTransaction() time (if a new property like 
"hibernate.transaction.defer_clear_session" is true).  Perhaps via a 
JtaPlatform.joinTransaction(EntityManager) registration call?

Thoughts?

Scott

[1] https://developer.jboss.org/thread/252572?start=45&tstart=0

[2] 
https://github.com/mmusgrov/jboss-transaction-spi/blob/threadDisassociationListener/src/main/java/org/jboss/tm/

[3] 
https://github.com/scottmarlow/wildfly/tree/transactiontimeout_clientut_noejb_wildfly9_march5_2015 



More information about the hibernate-dev mailing list