Hello, we're having an issue that I'm hoping someone on this list may
know something about.
We have an application configured which uses two different databases.
It's using the transaction management support provided by the spring
framework configured for JTA. Things seems to work well most of the
time, but when we run load tests against it we get errors similar to the
following occasionally:
* bitronix.tm.internal.BitronixXAException: resource already started on
XID a Bitronix XID [737072696E672D62746D0000013423394EA100000E41 :
737072696E672D62746D0000013423394F0100000E4F]
at
bitronix.tm.resource.jdbc.lrc.LrcXAResource.start(LrcXAResource.java:135)
at
bitronix.tm.internal.XAResourceHolderState.start(XAResourceHolderState.java:219)
at
bitronix.tm.internal.XAResourceManager.enlist(XAResourceManager.java:111)
at
bitronix.tm.BitronixTransaction.enlistResource(BitronixTransaction.java:93)
at
bitronix.tm.resource.common.TransactionContextHelper.enlistInCurrentTransaction(TransactionContextHelper.java:70)
at
bitronix.tm.resource.jdbc.JdbcConnectionHandle.enlistResource(JdbcConnectionHandle.java:84)
at
bitronix.tm.resource.jdbc.JdbcConnectionHandle.prepareStatement(JdbcConnectionHandle.java:289)
at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
...
Full stack trace here:
http://www.pastie.org/2991516Any ideas on why this might be happening? It appears that somehow a
resource which is "started" is getting reused across multiple concurrent
transactions which seems like it shouldn't happen.
Here is our bitronix transaction manager configuration:
bitronix.tm.serverId=spring-btm
bitronix.tm.disableJmx=true
bitronix.tm.timer.defaultTransactionTimeout=3600
bitronix.tm.journal=null
bitronix.tm.timer.gracefulShutdownInterval=0
bitronix.tm.journal.disk.logPart1Filename=target/btm1.tlog
bitronix.tm.journal.disk.logPart2Filename=target/btm2.tlog
bitronix.tm.2pc.warnAboutZeroResourceTransactions=false
bitronix.tm.allowMultipleLrc=true
bitronix.tm.setIgnoreRecoveryFailures=true
Of particular note here, we are using the "LRC" setup with two
datasources which is why we have allowMultipleLrc=true
Relevant PoolingDataSource configuration from our spring configuration
is as follows:
<property name="useTmJoin" value="true" />
<property name="allowLocalTransactions" value="true" />
<property name="shareTransactionConnections" value="true" />
<property name="enableJdbc4ConnectionTest" value="true" />
<property name="automaticEnlistingEnabled" value="true"/>
Thanks in advance for any help!
Eric
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email