[jbossts-issues] [JBoss JIRA] (JBTM-2264) Error enlisting second xa resource on the same oracle instance but other schema

Tom Jenkinson (JIRA) issues at jboss.org
Fri Sep 26 15:46:02 EDT 2014


    [ https://issues.jboss.org/browse/JBTM-2264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13006627#comment-13006627 ] 

Tom Jenkinson commented on JBTM-2264:
-------------------------------------

Hi Evgeniy,

This issue comes about due to different handling of detecting duplicate XAResources when enlistResource is called on a transaction. With Bitronix (and possibly Atomikos) when an XAR is enlisted pointer comparison is used to detect whether or not an equivalent XAR is registered. With Narayana we use isSameRM to detect if the XAR are equivalent, even if they have different references.

With BTM, it means that two different Xid are enlisted for the same resource manager, with Narayana it should have allowed us to use a single Xid for the two connections. In concrete terms your test leads to Narayana issuing the following calls:

{quote}
xaResource1.start(xid1, TMNOFLAGS)
xaResource2.start(xid1, TMJOIN)
{quote}

Unfortunately with Oracle that results in an exception as you have found when the driver reports that the two XAresources are for the same resource manager.

When Narayana is deployed in WildFly or EAP there is code in our JCA there to override the isSameRM method such that it will return false for Oracle and the two Xids would be created similar to BTM.

I am still looking into this and will update you next week,
Tom

> Error enlisting second xa resource on the same oracle instance but other schema
> -------------------------------------------------------------------------------
>
>                 Key: JBTM-2264
>                 URL: https://issues.jboss.org/browse/JBTM-2264
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>          Components: JTA
>    Affects Versions: 5.0.3
>            Reporter: Evgeniy Smelik
>            Assignee: Tom Jenkinson
>         Attachments: sscce.zip, sscce.zip, test.log
>
>
> I've got an exception {{java.sql.SQLException: ConnectionImple.registerDatabase - ARJUNA017017: enlist of resource failed}} while preparing statement in the second connection within the same oracle instance but other schema.
> Whole stack trace:
> {noformat}
> oracle.jdbc.xa.OracleXAException
> 	at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1110)
> 	at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:240)
> 	at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:741)
> 	at com.arjuna.ats.internal.jdbc.ConnectionImple.registerDatabase(ConnectionImple.java:983)
> 	at com.arjuna.ats.internal.jdbc.ConnectionImple.prepareStatement(ConnectionImple.java:179)
> 	at SimpleJdbcTest.insert(SimpleJdbcTest.java:46)
> 	at SimpleJdbcTest.main(SimpleJdbcTest.java:36)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
> java.sql.SQLException: ConnectionImple.registerDatabase - ARJUNA017017: enlist of resource failed
> 	at com.arjuna.ats.internal.jdbc.ConnectionImple.registerDatabase(ConnectionImple.java:1003)
> 	at com.arjuna.ats.internal.jdbc.ConnectionImple.prepareStatement(ConnectionImple.java:179)
> 	at SimpleJdbcTest.insert(SimpleJdbcTest.java:46)
> 	at SimpleJdbcTest.main(SimpleJdbcTest.java:36)
> {noformat}
> (Detail log and SSCCE are attached).
> I use jboss transaction manager in standaloine application just to test jboss JTA implementation. The same code works well if one and second data sources use own (different) database instances.
> I note that atomikos and bitronix JTA implementation works correctly in the same environment irrespectively single oracle instance is used or not.
> I found similar problem [here|http://stackoverflow.com/questions/23617179/jboss-6-1-unable-to-get-connection-from-pool].



--
This message was sent by Atlassian JIRA
(v6.3.1#6329)


More information about the jbossts-issues mailing list