[ 
https://issues.apache.org/jira/browse/DERBY-3172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mamta A. Satoor resolved DERBY-3172.
------------------------------------

       Resolution: Fixed
    Fix Version/s: 10.4.0.0
                   10.3.1.5

Merged changes into 10.3 codeline with revision 598712 and the commit comments 
were as follows


This commit merges into 10.3 codeline the 2 changes that went into trunk 
(595047 and 595803) for DERBY-3172.

I had to modify the merged code for the 2 test files by adding code to start 
and stop network server in jdbcapi.DataSourceTest and jdbc4.DataSourceTest.

In the trunk, these 2 functionalities of start and stop of network server are 
already available in the TestConfiguration.java. This functionalities were 
added into trunk as part of checkin 574053 for DERBY-2855. I could merge the 
changes that went into  TestConfiguration to introduce these 2 functionalities 
in 10.3 codeline but there is an outstanding jira issue about this 
functionality causing derbynet.jar dependency. The jira issue is DERBY-3151 
"Reduce dependency on NetworkServerControl in TestConfiguration" Because of 
this, I opted to add start and stop network server functionality in 
jdbcapi.DataSourceTest and jdbc4.DataSourceTest. I have updated DERBY-3151 
requesting that once we reach a resolution, we should migrate the changes into 
10.3 codeline too so that individual tests requiring start and stop network 
server do not have to write the code themselves, instead they can depend on the 
TestConfiguration.java or some other class to provide that functionality. Once 
that work is done, jdbcapi.DataSourceTest and jdbc4.DataSourceTest should be 
modified. I think in addition to these 2 tests, OutBufferedStream.java and 
TestConnectionMethods.java also have start and stop network server code 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
>             Fix For: 10.3.1.5, 10.4.0.0
>
>         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.

Reply via email to