[wildfly-dev] Transaction synchronization between threads

Cheng Fang cfang at redhat.com
Tue Feb 4 09:49:34 EST 2014


A jberet user reported JBERET-29 
<https://issues.jboss.org/browse/JBERET-29> (Foreign key constraint 
step_execution_jobexecutionid_fkey fails when using Postgresql on 
WildFly, and we are trying to fix it by jberet 1.0.0.Final.  The problem 
happens when user app starts a job within a transaction (e.g., CMT EJB), 
jberet inserts JobExecution into database (thread 1 & transaction 1), 
and then spawn a jberet-batch thread to run the job (thead 2 & 
transaction 2).  Sometimes T2 tries to access db before T1 is committed, 
hence the error reported by the user.

What's the common approach for solving this kind of problem?  I suppose 
other WildFly components may also have this issue and probably already 
solved.  Using transaction synchronization is a cleaner solution than 
polling db, but I'm not sure about its full implication.  Ideally, I 
don't want to use system level JTA API like TransactionManager or 
Synchronization in jberet proper, but probably we can implement it in 
WildFly jberet integration.

Thanks,
Cheng
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20140204/d67c3414/attachment.html 


More information about the wildfly-dev mailing list