Thanks Oliver for looking into this. By tx-datasource, I think you are referring to the SQLServer deployment file I posted on JBoss forum, which has <no-tx-datasource>. If yes, then even using <local-tx-datasource> does not solve the problem. AFAIK the no-tx-datasource just implies that the transactions are not managed by the Container. Irrespective of the type of the datasource, the container always sets autocommit to true on the connection. I observed that even Slide's JDBCStore is setting autocommit to false on getNewConnection(). The patch below does just the same for J2EEStore.
SelectMethod=direct does not work in manual transaction mode. Regards, Ritu -----Original Message----- From: Oliver Zeigermann [mailto:[EMAIL PROTECTED] Sent: Tuesday, June 22, 2004 6:51 PM To: Slide Developers Mailing List Subject: Re: AutoCommit Problem with the Connection returned by J2EEStore - Why don't you configure your datasource as tx-datasource? Doesn't this work? - OT: You can also try to use SelectMethod=direct as someone reported this might be faster Oliver Ritu Kedia wrote: > I had reported this error some time back but forgot to pursue it, since I > did a local fix and moved ahead. This problem surfaced again today when I > tried to deploy the jakarta_slide code from CVS Head. > > Bug description: > When Slide is deployed in JBoss App Server, the connections returned by the > J2EEStore have autocommit set to true. As a result the tx commits and > rollbacks fail and further call for a new transaction fails with the > following error: > 17:39:26,796 INFO [STDOUT] 22 Jun 2004 17:39:26 - > org.apache.slide.common.Namespace - INFO - Loading namespace slide base data > 17:39:26,843 INFO [STDOUT] 22 Jun 2004 17:39:26 - > org.apache.slide.transaction.SlideTransaction - WARNING - Rollback failure: > Resource manager org.apache.slide > [EMAIL PROTECTED] Error code XA_HEURCOM in Transaction 1 > xid main-1087906166828-1- in thread main > 17:39:26,843 INFO [STDOUT] 22 Jun 2004 17:39:26 - > org.apache.slide.common.Namespace - INFO - Init namespace slide > configuration > 17:39:26,906 INFO [STDOUT] 22 Jun 2004 17:39:26 - > org.apache.slide.common.Namespace - INFO - Import data into namespace slide > 17:39:26,937 INFO [STDOUT] 22 Jun 2004 17:39:26 - > org.apache.slide.common.XMLUnmarshaller - INFO - Loading object / > 17:39:26,953 INFO [STDOUT] 22 Jun 2004 17:39:26 - > org.apache.slide.transaction.SlideTransaction - WARNING - Enlist failure: > Resource manager org.apache.slide.s > [EMAIL PROTECTED] Error code XAER_INVAL in Transaction 3 xid > main-1087906166906-3- in thread main > 17:39:27,156 INFO [STDOUT] 22 Jun 2004 17:39:27 - > org.apache.slide.transaction.SlideTransaction - WARNING - Enlist failure: > Resource manager org.apache.slide.s > [EMAIL PROTECTED] Error code XAER_INVAL in Transaction 3 xid > main-1087906166906-3- in thread main > ...... same error repeats several times > > Atleast with JBoss it is not possible to declaratively set autocommit to > false on DB Connections. I had confirmed this with JBoss support(ref: > http://jboss.org/index.html?module=bb&op=viewtopic&t=48838). I have not > tested with Weblogic and Websphere. > > Bug fix: Setting autocommit to false when returning the connection from > J2EEStore. This fix should not cause any problems on other app servers > either. > > Patch: Please find attached the patch for J2EEStore. I hope someone could > look at this. > > Regards, > Ritu > <<autocmmit_patch.txt>> > > > > > > ------------------------------------------------------------------------ > > Index: J2EEStore.java > =================================================================== > RCS file: /home/cvspublic/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/J 2EEStore.java,v > retrieving revision 1.11 > diff -u -r1.11 J2EEStore.java > --- J2EEStore.java 11 Feb 2004 11:30:21 -0000 1.11 > +++ J2EEStore.java 22 Jun 2004 12:49:35 -0000 > @@ -155,6 +155,10 @@ > } > > protected Connection getNewConnection() throws SQLException { > - return ds.getConnection(); > + Connection con = ds.getConnection(); > + boolean autoCommit = con.getAutoCommit(); > + if(autoCommit) > + con.setAutoCommit(false); > + return con; > } > } > > > > ------------------------------------------------------------------------ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
