Hi,

I've been looking into the exception thrown upon the first access to Jackrabbit 
when deployed as JCA.

What I believe is the root cause is that the ConnectionRecoveryManager always 
enables auto-commit, causing any distributed transactions to fail (since the 
two phase commit can't work since it is already auto commited).

So, does the ConnectionRecoveryManager need to enable auto-commit?
Can auto-commit be forced to always be disabled when Jackrabbit is deployed 
using JCA?

 -- Cory


On 11/10/2010, at 5:47 PM, Cory Prowse wrote:

> Hi,
> 
> I'm attempting to deploy Jackrabbit using the JCA deployment and seeing an 
> error about an unknown transaction "TX_0" upon first access to the Repository.
> 
> I am deploying to Glassfish 3.0.1 and using H2 as the database.
> This is with Jackrabbit 2.1.1, however I also checked out the latest trunk 
> and attempted to use a build from that but it seems broken at the moment.
> 
> The error is:
> javax.transaction.xa.XAException: Transaction "TX_0" not found; SQL statement:
> COMMIT TRANSACTION TX_0 [90129-142]
> 
> After digging through the running code, I discovered it was being thrown from 
> the XaSessionImpl.commit() method.
> The same XID is passed into all methods, and the order of calls to 
> XASessionImpl is:
> 1. start
> 2. end
> 3. prepare
> 4. commit - (note: the parameter onephase is false so no prepare is called 
> inside this method)
> 
> Also note that although the first usage is not a onephase transaction, future 
> calls are and there are no calls to XASessionImpl.prepare().
> 
> Can anyone shed some more light on this issue?
> I'm worried that Jackrabbit isn't initialising itself correctly on startup?
> 
> -- Cory

Reply via email to