Removing a ConnectionEventListener from a PooledConnection during its connectionClosed() callback causes other ConnectionEventListener callbacks to be missed -------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: DERBY-3401 URL: https://issues.apache.org/jira/browse/DERBY-3401 Project: Derby Issue Type: Bug Components: JDBC Affects Versions: 10.4.0.0 Reporter: Daniel John Debrunner Priority: Minor A ConnectionEventListener should be able to remove itself as a listener during a callback without affecting any other callbacks. DataSourceTest.subtestPooledRemoveListenerOnClose() tests the scenario but calls to it will be commented out in the fixture testPooledReuseOnClose() (using this bug number). Issue is that such a remove will modify the eventListener Vector in EmbedPooledConnection while it is being enumerated over. An idea for a fix would be to first change the Vector over to a new-style collection, such as an implementation of List, then work off a copy of the collection when calling the callbacks. I don't think eventListener needs to be a synchronized collection, its access should be already synchronized on EmbedPooledConnection. I imagine that a similar issue exists for adding a new callback during callback processing, fixing this bug would fix that issue as well though no tests have been written for the add case. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.