db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <derby-...@db.apache.org>
Subject [jira] Assigned: (DERBY-246) XA end() fails with Connection is closed error
Date Sat, 30 Apr 2005 18:05:05 GMT
     [ http://issues.apache.org/jira/browse/DERBY-246?page=all ]

Kathey Marsden reassigned DERBY-246:
------------------------------------

    Assign To: Kathey Marsden

> XA end() fails with Connection is closed error
> ----------------------------------------------
>
>          Key: DERBY-246
>          URL: http://issues.apache.org/jira/browse/DERBY-246
>      Project: Derby
>         Type: Bug
>   Components: Network Client
>     Versions: 10.1.0.0
>  Environment: I am using the 10.1.0 alpha build.
>     Reporter: Dibyendu Majumdar
>     Assignee: Kathey Marsden

>
> I am testing ClientXADataSource.
> It fails when end() is called - here is the output fromn my test program.
> Running test org.simplejta.xatests.common.Test1
> autocommit = false
> No of rows Affected 1
> autocommit = true
> No of rows Affected 1
> org.apache.derby.client.am.XaException: XAER_RMFAIL : Connection is Closed.
> 	at org.apache.derby.client.net.NetXAResource.throwXAException(Unknown Source)
> 	at org.apache.derby.client.net.NetXAResource.throwXAException(Unknown Source)
> 	at org.apache.derby.client.net.NetXAResource.connectionClosedFailure(Unknown Source)
> 	at org.apache.derby.client.net.NetXAResource.end(Unknown Source)
> 	at org.simplejta.xatests.common.Test1.doTest(Test1.java:52)
> 	at org.simplejta.tests.DerbyClientTests.main(DerbyClientTests.java:66)
> Caused by: org.apache.derby.client.am.SqlException: Connection is Closed.
> 	... 4 more
> Test org.simplejta.xatests.common.Test1 failed
> The test program is:
> /*
>  * Test case for multiple logical connections between start() and end().
>  */
> package org.simplejta.xatests.common;
> import java.sql.Connection;
> import java.sql.SQLException;
> import java.sql.Statement;
> import javax.sql.XAConnection;
> import javax.sql.XADataSource;
> import javax.transaction.xa.XAResource;
> import javax.transaction.xa.Xid;
> public class Test1 extends TestCase {
>     public void doTest(XADataSource ds) throws Exception {
>             // Get a XA connection to the underlying data source
>             XAConnection pc1 = ds.getXAConnection();
>             // Get the XA Resource
>             XAResource xar1 = pc1.getXAResource();
>             // Create an Xid
>             Xid xid1 = Utils.createXid(1);
>             // Start the XA transaction
>             xar1.start(xid1, XAResource.TMNOFLAGS);
>             // Get a Logical Connection
>             Connection conn1 = pc1.getConnection();
>             System.out.println("autocommit = " + conn1.getAutoCommit());
>             // Do something with conn1
>             doSomeWork1(conn1, 50);
>             // Close the logical connection
>             conn1.close();
>             // Get another logical connection
>             conn1 = pc1.getConnection();
>             System.out.println("autocommit = " + conn1.getAutoCommit());
>             // Do something with conn1
>             doSomeWork1(conn1, 51);
>             // Close the logical connection
>             conn1.close();
>             // END the branche
>             xar1.end(xid1, XAResource.TMSUCCESS);
>             // Prepare the RMs
>             int prp1 = xar1.prepare(xid1);
>             // Commit transaction
>             xar1.commit(xid1, false);
>             // Close physical connection
>             pc1.close();
>     }
>     private void doSomeWork1(Connection conn, int deptno) throws SQLException {
>         Statement stmt = conn.createStatement();
>         int cnt = stmt
>                 .executeUpdate("INSERT INTO dept VALUES (" + deptno + ", 'BSD', 'LONDON')");
>         System.out.println("No of rows Affected " + cnt);
>         stmt.close();
>         stmt = null;
>     }
> }
> This test works fine with EmbeddedXADataSource. It also works fine with Oracle.
> Also, note that this error seems similar to the error I am getting with DB2 using the
DB2 type 4 driver.
> Running test org.simplejta.xatests.common.Test1
> autocommit = false
> No of rows Affected 1
> autocommit = false
> No of rows Affected 1
> com.ibm.db2.jcc.b.de: XAER_RMFAIL : Connection is Closed. : Exception from native code
during XA
> 	at com.ibm.db2.jcc.uw.UWXAResource.a(UWXAResource.java:695)
> 	at com.ibm.db2.jcc.uw.UWXAResource.a(UWXAResource.java:709)
> 	at com.ibm.db2.jcc.uw.UWXAResource.end(UWXAResource.java:227)
> 	at org.simplejta.xatests.common.Test1.doTest(Test1.java:52)
> 	at org.simplejta.tests.DB2Tests.main(DB2Tests.java:65)
> Caused by: com.ibm.db2.jcc.b.SqlException: Connection is Closed.
> 	at com.ibm.db2.jcc.uw.UWXAResource.a(UWXAResource.java:705)
> 	... 3 more
> Test org.simplejta.xatests.common.Test1 failed
> Curiously, the error appears to corrupt the database. Subsequent attempts to start the
database gives an error.
> org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ040,
SQLERRMC: tcaXJ040.CXSTB0:XSTB0.MFailed to start database 'tca', see the next exception
for details.An exception was thrown during transaction abort.(server log:c:\derby\databases\derby.log)
> 	at org.apache.derby.client.am.Connection.completeSqlca(Unknown Source)
> 	at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(Unknown Source)
> 	at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(Unknown Source)
> 	at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(Unknown Source)
> 	at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(Unknown Source)
> 	at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(Unknown Source)
> 	at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(Unknown Source)
> 	at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(Unknown Source)
> 	at org.apache.derby.client.net.NetConnection.flowConnect(Unknown Source)
> 	at org.apache.derby.client.net.NetConnection.initialize(Unknown Source)
> 	at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
> 	at org.apache.derby.client.net.NetXAConnection.<init>(Unknown Source)
> 	at org.apache.derby.client.ClientPooledConnection.<init>(Unknown Source)
> 	at org.apache.derby.client.ClientXAConnection.<init>(Unknown Source)
> 	at org.apache.derby.jdbc.ClientXADataSource.getXAConnection(Unknown Source)
> 	at org.apache.derby.jdbc.ClientXADataSource.getXAConnection(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message