db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dibyendu Majumdar (JIRA)" <derby-...@db.apache.org>
Subject [jira] Created: (DERBY-246) XA end() fails with Connection is closed error
Date Fri, 29 Apr 2005 00:00:04 GMT
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  
 Environment: I am using the 10.1.0 alpha build.
    Reporter: Dibyendu Majumdar

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

            // Get another logical connection
            conn1 = pc1.getConnection();
            System.out.println("autocommit = " + conn1.getAutoCommit());

            // Do something with conn1
            doSomeWork1(conn1, 51);

            // Close the logical connection

            // 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

    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 = 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
	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:
For more information on JIRA, see:

View raw message