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]

Reply via email to