commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (DBCP-216) Improvement of error recovery in KeyedCPDSConnectionFactory
Date Sat, 12 Sep 2009 21:24:57 GMT

     [ https://issues.apache.org/jira/browse/DBCP-216?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Phil Steitz resolved DBCP-216.
------------------------------

    Resolution: Fixed

Completed fix in r814240

1) Modified fix applied in r598045: 
* Removed workaround to prevent ConcurrentModificationExceptions generated by PooledConnectionImpl's
notifyListeners method.
* Changed PooledConnectionImpl notifyListeners to copy listeners and iterate over the copy
instead of directly iterating over failfast Vector iterator.

2) Applied the same fix to CPDSConnectionFactory

> Improvement of error recovery in KeyedCPDSConnectionFactory
> -----------------------------------------------------------
>
>                 Key: DBCP-216
>                 URL: https://issues.apache.org/jira/browse/DBCP-216
>             Project: Commons Dbcp
>          Issue Type: Improvement
>    Affects Versions: 1.2.2
>         Environment: Windows XP, Java 1.5.0_06-b05, Sybase ASE 12.5.4, jConnect 6.0.5
EBF 13862, Commons Pool 1.3
>            Reporter: Marcos Sanz
>            Assignee: Phil Steitz
>             Fix For: 1.3
>
>         Attachments: KeyedCPDSConnectionFactory.java.diff
>
>
> Attached you'll find a patch that improves the recovery of the class in different error
situations.
> 1. The addition of removeConnectionEventListener() in destroyObject() ensures that the
listener is removed, which is not guaranteed to have happened upon call of destroyObject().
We are for sure not interested any more in events, since we are about to destroy.
> 2. The same addition is made to connectionClosed(). Additionally, we have substituted
there the call to destroyObject() with a call to pool.invalidateObject(). This is necessary
because otherwise the object is destroyed but not removed from the pool.
> 3. The same substitution is made in connectionErrorOccurred(), otherwise the object might
remain in the pool.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message