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.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: DERBY-1831
URL: http://issues.apache.org/jira/browse/DERBY-1831
Project: Derby
Issue Type: Bug
Components: Network Server
Affects Versions: 10.1.3.1, 10.1.3.0, 10.1.2.1, 10.1.1.0, 10.0.2.1, 10.0.2.0
Environment: Any
Reporter: Rajesh Kartha
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.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira