[
https://issues.apache.org/jira/browse/DERBY-2871?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Julius Stroffek updated DERBY-2871:
-----------------------------------
Attachment: d2871-test.stat
d2871-test.diff
I rewrote the test that it will not close the connections and they will not be
garbage collected neither since I call the XAConnection.close method on every
connection at the end of the test.
I ran all the tests (suites.All and derbyall) without failures on my box for
'd2871-test' patch also with a patch for DERBY-2953 without any failures. I
tried to run those test also on a HP-UX box where the test was originally
failing. The rewritten test always fails with the message
---
1)
testXATransactionTimeout(org.apache.derbyTesting.functionTests.tests.jdbcapi.XATransactionTest)java.sql.SQLException:
A communications e
rror has been detected: Broken pipe (errno:32).
at
org.apache.derby.client.am.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:46)
at
org.apache.derby.client.am.SqlException.getSQLException(SqlException.java:362)
at
org.apache.derby.client.ClientPooledConnection.<init>(ClientPooledConnection.java:115)
at
org.apache.derby.client.ClientXAConnection.<init>(ClientXAConnection.java:48)
at
org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newClientXAConnection(ClientJDBCObjectFactoryImpl.java:76)
at
org.apache.derby.jdbc.ClientXADataSource.getXAConnectionX(ClientXADataSource.java:88)
at
org.apache.derby.jdbc.ClientXADataSource.getXAConnection(ClientXADataSource.java:72)
at
org.apache.derby.jdbc.ClientXADataSource.getXAConnection(ClientXADataSource.java:65)
at
org.apache.derbyTesting.functionTests.tests.jdbcapi.XATransactionTest.testXATransactionTimeout(XATransactionTest.java:188)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:95)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
at junit.extensions.TestSetup.run(TestSetup.java:25)
at
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
at junit.extensions.TestSetup.run(TestSetup.java:25)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
at junit.extensions.TestSetup.run(TestSetup.java:25)
at
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
Caused by: org.apache.derby.client.am.DisconnectException: A communications
error has been detected: Broken pipe (errno:32).
at
org.apache.derby.client.net.NetAgent.throwCommunicationsFailure(NetAgent.java:413)
at org.apache.derby.client.net.NetAgent.sendRequest(NetAgent.java:387)
at org.apache.derby.client.net.NetAgent.flush_(NetAgent.java:265)
at org.apache.derby.client.am.Agent.flowOutsideUOW(Agent.java:196)
at
org.apache.derby.client.net.NetConnection.flowServerAttributesAndKeyExchange(NetConnection.java:773)
at
org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(NetConnection.java:617)
at
org.apache.derby.client.net.NetConnection.flowConnect(NetConnection.java:435)
at
org.apache.derby.client.net.NetConnection.initialize(NetConnection.java:296)
at
org.apache.derby.client.net.NetConnection.<init>(NetConnection.java:280)
at
org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(ClientJDBCObjectFactoryImpl.java:264)
at
org.apache.derby.client.net.NetXAConnection.createNetConnection(NetXAConnection.java:269)
at
org.apache.derby.client.net.NetXAConnection.<init>(NetXAConnection.java:73)
at
org.apache.derby.client.ClientPooledConnection.getNetXAConnection(ClientPooledConnection.java:331)
at
org.apache.derby.client.ClientPooledConnection.<init>(ClientPooledConnection.java:108)
... 44 more
Caused by: java.net.SocketException: Broken pipe (errno:32)
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:97)
at java.net.SocketOutputStream.write(SocketOutputStream.java:141)
at org.apache.derby.client.net.Request.sendBytes(Request.java:1388)
at org.apache.derby.client.net.Request.flush(Request.java:1382)
at org.apache.derby.client.net.NetAgent.sendRequest(NetAgent.java:385)
... 56 more
---
I explored a problem a bit and discovered that the problem occurs due to the
limit of the number of open files and I have created a simple code to verify
this...
int count = 1000;
XAConnection xaConn[] = new XAConnection[count];
try {
// start-up the server
NetworkServerControl server = new NetworkServerControl();
server.start (null);
for (int i=0; i < count; i++) {
System.out.print("Creating connection number " + i + "...");
xaConn[i] = createXAConnection(connString, "", "");
System.out.println("Ok.");
}
for (int i=0; i < count; i++) {
xaConn[i].close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
which will throw an exception after creating a connection number 391
org.apache.derby.client.am.DisconnectException: java.net.SocketException :
Error connecting to server localhost on port 1527 with message File table
overflow (errno:23).
at org.apache.derby.client.net.NetAgent.<init>(NetAgent.java:129)
at
org.apache.derby.client.net.NetConnection.newAgent_(NetConnection.java:1086)
at
org.apache.derby.client.am.Connection.initConnection(Connection.java:218)
at org.apache.derby.client.am.Connection.<init>(Connection.java:169)
at
org.apache.derby.client.net.NetConnection.<init>(NetConnection.java:278)
at
org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(ClientJDBCObjectFactoryImpl.java:264)
at
org.apache.derby.client.net.NetXAConnection.createNetConnection(NetXAConnection.java:269)
at
org.apache.derby.client.net.NetXAConnection.<init>(NetXAConnection.java:73)
at
org.apache.derby.client.ClientPooledConnection.getNetXAConnection(ClientPooledConnection.java:331)
at
org.apache.derby.client.ClientPooledConnection.<init>(ClientPooledConnection.java:108)
... 8 more
Caused by: java.net.SocketException: File table overflow (errno:23)
at java.net.Socket.createImpl(Socket.java:397)
at java.net.Socket.<init>(Socket.java:359)
at java.net.Socket.<init>(Socket.java:178)
at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:196)
at
org.apache.derby.client.net.OpenSocketAction.run(OpenSocketAction.java:62)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.derby.client.net.NetAgent.<init>(NetAgent.java:127)
... 17 more
------
> XATransactionTest gets XaException: Error executing a XAResource.commit(),
> server returned XAER_PROTO.
> ------------------------------------------------------------------------------------------------------
>
> Key: DERBY-2871
> URL: https://issues.apache.org/jira/browse/DERBY-2871
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.3.1.0
> Environment: OS: HP-UX v1.11 i
> JDK: HP 1.5.0.03
> Reporter: Henri van de Scheur
> Assignee: Julius Stroffek
> Priority: Minor
> Attachments: d2871-test.diff, d2871-test.stat, d2871.diff, d2871.stat
>
>
> Method: org.apache.derbyTesting.functionTests.tests.jdbcapi.XATransactionTest
> Signature:
> %XAER_PROTO : Error executing a XAResource.commit(), server returned
> XAER_PROTO%
> Also see:
> http://dbtg.thresher.com/derby/test/10.3.1.0_RC/jvm1.5/testing/testlog/hpux/548006-suitesAll_diff.txt
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.