Derby
  1. Derby
  2. DERBY-1831

After a database shutdown, Network Server should invalidate all active connections and an appropriate error message should be thrown at the client while using those connections later.

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.2.1, 10.1.3.1
    • Fix Version/s: None
    • Component/s: Network Server
    • Environment:
      Any
    • Urgency:
      Normal
    • Issue & fix info:
      Repro attached
    • Bug behavior facts:
      Embedded/Client difference

      Description

      Any connections currently open during the shutdown should be invalidated. This would indicate the correct info - that there are no open connections during the 'show connections' command and the subsequent 'set connection' and sql should fail with appropriate errors. It works as expected in embedded mode, but it is more important to behave accordingly in the case of Network Server where multiple users are connected, rather than throw an obscure error of "ERROR 58009: A network protocol error was encountered and the connection ............. implementation-specific condition for which there was no architected message "

      ij version 10.2
      ij> connect 'jdbc:derby://localhost:1527/testdb;create=true' as connA;
      ij> drop table t;
      0 rows inserted/updated/deleted
      ij> create table t (id int);
      0 rows inserted/updated/deleted
      ij> insert into t values (1);
      1 row inserted/updated/deleted
      ij> insert into t values (2);
      1 row inserted/updated/deleted
      ij> select * from t;
      ID
      -----------
      1
      2

      2 rows selected

      --Connection A is still open

      ij> connect 'jdbc:derby://localhost:1527/testdb' as connB;
      ij(CONNB)> insert into t values (3);
      1 row inserted/updated/deleted
      ij(CONNB)> select * from t;
      ID
      -----------
      1
      2
      3

      3 rows selected

      – Should error out saying there are open connections to the database

      ij(CONNB)> connect 'jdbc:derby://localhost:1527/testdb;shutdown=true';
      ERROR 08006: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: Database 'testdb' shutdown.
      ij(CONNB)> disconnect;

      --Connection A is still open

      ij> show connections;
      CONNA - jdbc:derby://localhost:1527/testdb;create=true
      No current connection

      --Set connection to connection A

      ij> set connection connA;

      --Try a sql

      ij> select * from t;
      ERROR 58009: A network protocol error was encountered and the connection has been terminated: the requested command encountered an unarchitected and implementation-specific condition for which there was no architected message
      ij>

      In embedded the ''shutdown=true' closes all active connections to the database.

      ij(CONNB)> connect 'jdbc:derby:testdb;shutdown=true';
      ERROR 08006: Database 'testdb' shutdown.
      ij(CONNB)> disconnect;

      -- Shows no current connections after a shutdown

      ij> show connections;
      No current connection
      ij> set connection connA;
      IJ ERROR: No connection exists with the name CONNA
      ij> select * from t;
      IJ ERROR: Unable to establish connection
      ij>

      Furthermore a related issue DERBY-1737 - need to check for existing connections before shutdown is marked as an improvement.

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Rajesh Kartha
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development