[
https://issues.apache.org/jira/browse/DERBY-3675?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12597884#action_12597884
]
Knut Anders Hatlen commented on DERBY-3675:
-------------------------------------------
I see how that could cause a ConcurrentModificationException. When the
connection is closed, it simply iterates through the list of listeners. If one
of the listeners is removed while iterating, the list is modified and the
exception is thrown on the next operation on the list iterator. The code seems
properly synchronized, so the only way this can happen is if one of the
listeners adds or removes a listener. It should be easy to fix. We only need to
create a copy of the list and iterate over the listeners in the copy instead of
the original. This is by the way exactly what java.util.Observable does, so
perhaps the cleanest way to fix it is to create a wrapper around
java.util.Observer/java.util.Observable.
> ConcurrentModificationException on closing pooled connection
> ------------------------------------------------------------
>
> Key: DERBY-3675
> URL: https://issues.apache.org/jira/browse/DERBY-3675
> Project: Derby
> Issue Type: Bug
> Components: Network Client
> Affects Versions: 10.4.1.3
> Reporter: Trejkaz
>
> I'm seeing the following exception from calling close() on a connection
> returned from a CollectionPoolDataSource.
> java.util.ConcurrentModificationException
> at
> java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
> at java.util.AbstractList$Itr.next(AbstractList.java:343)
> at
> org.apache.derby.client.ClientPooledConnection.recycleConnection(ClientPooledConnection.java:343)
> at
> org.apache.derby.client.am.LogicalConnection.close(LogicalConnection.java:83)
> The only particularly unique thing about the area of the code where we're
> doing this is that we're closing it immediately after opening it, as an
> initial check to make sure it can connect.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.