Commons Dbcp
  1. Commons Dbcp
  2. DBCP-3

[dbcp] PoolableConnection.close() won't allow multiple close

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: Nightly Builds
    • Fix Version/s: 1.3
    • Labels:
      None
    • Environment:

      Operating System: All
      Platform: All

      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);

        Issue Links

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              Adam Jenkins
            • Votes:
              3 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development