Network Server should check for current open and active connections before 
shutting down a database
---------------------------------------------------------------------------------------------------

                 Key: DERBY-1737
                 URL: http://issues.apache.org/jira/browse/DERBY-1737
             Project: Derby
          Issue Type: Bug
          Components: Network Server
    Affects Versions: 10.0.2.0
         Environment: Any
            Reporter: Rajesh Kartha
         Attachments: shutdown.sql, shutdown_embed.sql


When a database shutdown is issued using the 'shutdown=true'  by a client, the 
network server does not check for any active
connections and shuts down the respective database. As a result queries on the 
active connection start failing.

I would expect the right behaviour should be to throw an error  mentioning 
shutdown was not performed since there are open connections
to the database.

Here is a sample output:

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>

This issue kind of exists in embeddded also but since the database was booted 
in the same JVM,  one can argue there is more control on the connections  made 
to the database from the current JVM. 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>

-- 
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

        

Reply via email to