You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Phil Steitz (JIRA)" <ji...@apache.org> on 2010/02/15 03:25:28 UTC
[jira] Closed: (DBCP-288) DelegatingConnection implicitly casts
AbandonedTrace to Statement
[ https://issues.apache.org/jira/browse/DBCP-288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Phil Steitz closed DBCP-288.
----------------------------
> DelegatingConnection implicitly casts AbandonedTrace to Statement
> -----------------------------------------------------------------
>
> Key: DBCP-288
> URL: https://issues.apache.org/jira/browse/DBCP-288
> Project: Commons Dbcp
> Issue Type: Bug
> Affects Versions: 1.3
> Environment: I am using DBCP from svn-trunk (rev 766626).
> I am using the BasicManagedDatasource with the MysqlXADataSource.
> Configuration of BasicDataSource:
> maxActive="10"
> maxIdle="10"
> maxWait="5000"
> minIdle="0"
> initialSize="2"
> removeAbandoned="true"
> removeAbandonedTimeout="120"
> logAbandoned="true"
> Reporter: Marc Kannegießer
> Fix For: 1.3
>
> Attachments: delegating_connection_close_statements.patch
>
>
> If a {{ManagedConnection}} is put back to the connection pool it gets passivated ({{GenericObjectPool line 1101}}) by calling {{passivateObject()}} on the {{PoolableConnectionFactory}} which calls passivate() on the {{DelegatingConnection}}.
> {{passivate()}} in {{DelegatingConnection}} then executes the following code:
> {code:java}
> List statements = getTrace();
> if( statements != null) {
> Statement[] set = new Statement[statements.size()];
> statements.toArray(set);
> for (int i = 0; i < set.length; i++) {
> set[i].close();
> }
> clearTrace();
> }
> {code}
> This is an implicit cast from {{AbandonedTrace}} to {{Statement}} since {{getTrace()}} returns a list of {{AbandonedTrace}} instances.
> If the list contains other instances than those, that implement Statement an ArrayStoreException is thrown at {{statements.toArray(set)}} (line 416). See http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html#toArray() for details.
> I'd say this is a bug since {{AbandonedTrace}} does not implement {{Statement}} and there are derived classes that do not implement it also.
> In my case the list returned by {{getTrace()}} contains instances of {{DelegatingDatabaseMetaData}} which causes the mentioned {{ArrayStoreException}}.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.