Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-3172

ConnectionEventListener.connectionErrorOccurred not being executed when SQLState 08006 Error is thrown

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 10.3.1.4
    • 10.3.2.1, 10.4.1.3
    • JDBC
    • None

    Description

      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

      Attachments

        1. DerbyNotification2.java
          3 kB
          Sun Seng David Tan

        Activity

          People

            mamtas Mamta A. Satoor
            stan Sun Seng David Tan
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: