Jencks 2.0+Spring 2.0.2 transaction problem

View: New views
2 Messages — Rating Filter:   Alert me  

Jencks 2.0+Spring 2.0.2 transaction problem

by Christopher G. Stach II :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

We have Jencks 2.0, AMQ 4.1.0, and Spring 2.0.2 driving MD POJOs out of
a JCA pool in Resin.  We need to do this because Resin is the TM and
supplies the DB pooling.  For the most part, it works.  We've always had
issues with XA transactions in this configuration, but one of them was
_hopefully_ fixed in Jencks 2.0 with the XAEndpoint changes.  Here's the
scoop:

* Hibernate flush generates a rollback from a deadlock at
SpringSessionSynchronization:126
* AbstractPlatformTransactionManager:682 attempts to start a rollback
from the thrown RuntimeException
* AbstractPlatformTransactionManager:791 skips the UserTransaction
rollback (JtaTransactionManager:794) at
AbstractPlatformTransactionManager:795 because Spring originally got a
transaction from Resin and it was marked as "not new"
(AbstractPlatformTransactionManager:327 until 441, we use Required)
* Things run until XAEndpoint:101, which branches to the commit at 105
because only the Spring transaction was marked for rollback, not the
real one

Should Jencks be cooperating more with Spring's
PlatformTransactionManager, or what?  This is causing rollbacks to turn
into commits, and that's pretty annoying. :)

--
Christopher G. Stach II


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email


Re: Jencks 2.0+Spring 2.0.2 transaction problem

by Christopher G. Stach II :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Christopher G. Stach II wrote:

> We have Jencks 2.0, AMQ 4.1.0, and Spring 2.0.2 driving MD POJOs out of
> a JCA pool in Resin.  We need to do this because Resin is the TM and
> supplies the DB pooling.  For the most part, it works.  We've always had
> issues with XA transactions in this configuration, but one of them was
> _hopefully_ fixed in Jencks 2.0 with the XAEndpoint changes.  Here's the
> scoop:
>
> * Hibernate flush generates a rollback from a deadlock at
> SpringSessionSynchronization:126
> * AbstractPlatformTransactionManager:682 attempts to start a rollback
> from the thrown RuntimeException
> * AbstractPlatformTransactionManager:791 skips the UserTransaction
> rollback (JtaTransactionManager:794) at
> AbstractPlatformTransactionManager:795 because Spring originally got a
> transaction from Resin and it was marked as "not new"
> (AbstractPlatformTransactionManager:327 until 441, we use Required)
> * Things run until XAEndpoint:101, which branches to the commit at 105
> because only the Spring transaction was marked for rollback, not the
> real one
>
> Should Jencks be cooperating more with Spring's
> PlatformTransactionManager, or what?  This is causing rollbacks to turn
> into commits, and that's pretty annoying. :)
>

This is being tracked in SPR-3052 for now, since I think it may be a
Spring issue.  I might hack Jencks to just coordinate with Spring's
transaction to get this working, though.

--
Christopher G. Stach II


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email