[
https://issues.apache.org/jira/browse/DERBY-3172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12542592
]
Mamta A. Satoor commented on DERBY-3172:
----------------------------------------
Commited(revision 595047) the changes into trunk codeline with following commit
comments
DERBY-3172
Change the Network Server code so that when the Network Server is shutdown, any
api on Connection object will raise a Connection error event (similar to what
is done in embedded mode). This also required me changing the disconnectError
from -4999 to 40000(to match embedded). This change was made client.am.SqlCode.
I have added tests for all the apis on Connection object in DataSourceTest. Had
to change couple tests which were testing for -4999. Now they look for 40000. I
will merge this change into 10.3 and run tests there before committing the
changes in 10.3 codeline.
> ConnectionEventListener.connectionErrorOccurred not being executed when
> SQLState 08006 Error is thrown
> ------------------------------------------------------------------------------------------------------
>
> Key: DERBY-3172
> URL: https://issues.apache.org/jira/browse/DERBY-3172
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.3.1.4
> Reporter: Stan Bradbury
> Assignee: Mamta A. Satoor
> Attachments: DerbyNotification2.java
>
>
> The attached program demonstrates the problem. Using the
> ClientConnectionPoolDataSource40 with a connectionEventListener the defined
> method connectionErrorOccurred is not executed after the Network Server is
> shutdown and activity is performed on a previously established pooled
> connection.
> Program also demonstrates that the connectionClosed method is executed when
> the connection is closed.
> To run the reproduction:
> 1) start network server (listening on default host/port and
> -noSecurityManager specified)
> 2) run the program
> Output is:
> > java DerbyNotification2
> 10.3.1.5 - (579866)
> Apache Derby
> .got connection...check if connectionClosed method is called
> EVENT CALLED: Connection closed happened
> . . .
> . . .Get connection and issue test SQL statement
> . . .AS EXPECTED: no table exists
> . SHUTDOWN Network server and check if connectionErrorOccurred is called
> now try to use the connection after the NS is STOPPED
> SQLState is: 08006
> Error is: -4499
> Message is: Insufficient data while reading from the network - expected a
> minimum of 6 bytes and received only -1 bytes. The connection has been
> terminated.
> Exception in thread "main" java.sql.SQLNonTransientConnectionException:
> Insufficient data while reading from the network - expected a minimum of 6
> bytes and received only -1 bytes. The connection has
> been terminated.
> at
> org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.client.am.SqlException.getSQLException(Unknown
> Source)
> at org.apache.derby.client.am.Connection.prepareStatement(Unknown
> Source)
> at
> org.apache.derby.client.am.LogicalConnection.prepareStatement(Unknown Source)
> at DerbyNotification2.runTest(DerbyNotification2.java:64)
> at DerbyNotification2.main(DerbyNotification2.java:87)
> Caused by: org.apache.derby.client.am.DisconnectException: Insufficient data
> while reading from the network - expected a minimum of 6 bytes and received
> only -1 bytes. The connection has been termina
> ted.
> at org.apache.derby.client.net.Reply.fill(Unknown Source)
> at org.apache.derby.client.net.Reply.ensureALayerDataInBuffer(Unknown
> Source)
> at org.apache.derby.client.net.Reply.readDssHeader(Unknown Source)
> at org.apache.derby.client.net.Reply.startSameIdChainParse(Unknown
> Source)
> at
> org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown
> Source)
> at
> org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown
> Source)
> at
> org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown
> Source)
> at
> org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source)
> at
> org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOutput(Unknown
> Source)
> at
> org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOutput(Unknown
> Source)
> at org.apache.derby.client.am.PreparedStatement.prepare(Unknown
> Source)
> at org.apache.derby.client.am.Connection.prepareStatementX(Unknown
> Source)
> ... 4 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.