[ http://issues.apache.org/jira/browse/DERBY-1737?page=comments#action_12433284 ] Daniel John Debrunner commented on DERBY-1737: ----------------------------------------------
Yes, the connection's failing in an unclear way is a separate bug, they should be able to deal cleanly with the server shutting done cleanly or just disappearing. And 58009 has a horrible message, very unclear! > 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
