Bug 51786 - Discarded connection stay active in pool
Summary: Discarded connection stay active in pool
Status: RESOLVED FIXED
Alias: None
Product: Tomcat Modules
Classification: Unclassified
Component: jdbc-pool (show other bugs)
Version: unspecified
Hardware: PC Linux
: P2 major (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-08 11:50 UTC by seneque
Modified: 2011-09-14 09:30 UTC (History)
1 user (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description seneque 2011-09-08 11:50:52 UTC
Hi,
I wrote an JdbcInterceptor that flag connection as discarded in case of Exception that makes the connection unusable.
The problem is:
when I call close on the connection, it is not returned to the pool and it is still considered as an active connection in the pool.
The cause of the problem is those pieces of code in ProxyConnection:

if (compare(CLOSE_VAL,method)) {
            if (isClosed()) return null; //noop for already closed.
            PooledConnection poolc = this.connection;
            this.connection = null;
            pool.returnConnection(poolc);
            return null;
        }


and

public boolean isClosed() {
        return connection==null || connection.isDiscarded();
    }
Comment 1 Keiichi Fujino 2011-09-14 09:30:45 UTC
Thanks for report.
This is  fixed in r1170479 and r1170485 and  will be in 7.0.22 onwards.