Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
Nightly Builds
-
None
-
Operating System: All
Platform: All
-
23185
Description
Sun's javadoc for java.sql.Connection.close() specifies that calling close on an
already closed Connection is a no-op. However, PoolableConnection.close() (v
1.10) throws a SQLException if close() is called on a closed Connection.
PoolableConnection.close() should just return if the Connection is already
closed. Here is a patch:
To demonstrate the bug, just obtain an open PoolableConnection and call close()
on it twice; the second call will produce a SQLException. According to Sun's
spec, the second close() should just be a no-op. The current behaviour is
preferable to the old behaviour where it returned the Connection to the pool
twice, but it's still not according to the spec.
Here's a patch:
-
-
- PoolableConnection.java.orig 2003-09-15 16:07:53.000000000 -0400
- PoolableConnection.java 2003-09-15 16:08:11.000000000 -0400
***************
- 108,114 ****
*/
public synchronized void close() throws SQLException {
if(isClosed()) { ! throw new SQLException("Already closed."); }else {
try {
_pool.returnObject(this);
- 108,114 ----
*/
public synchronized void close() throws SQLException {
if(isClosed()) { ! return; }else {
try {
_pool.returnObject(this);
-
Attachments
Issue Links
- is depended upon by
-
DBCP-193 BasicDataSource returns negative values for NumActive when Oracle Driver Connection#isClosed return true (End of file communication on CHannel)
- Closed