Uploaded image for project: 'Commons Dbcp'
  1. Commons Dbcp
  2. DBCP-5

[dbcp] PoolGuardConnectionWrapper violates close() contract

    Details

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

      Operating System: All
      Platform: All

    • Bugzilla Id:
      39069

      Description

      org.apache.commons.dbcp.PoolingDatasource.PoolGuardConnectionWrapper.close()
      violates the Connection.close() contract specified in the Java 1.5 API. The
      current API specifies that calling close() on an already-closed connection is a
      no-op. (Blame Sun for the bug. The API didn't used to say that.)

      PoolGuardConnectionWrapper.close() first calls checkOpen() which throws an
      exception if close() has already been called. Clearly that's not a no-op.

      The simplest fix is to change the first line in the close() method from this:
      checkOpen();

      to this:
      if (this.delegate == null) return;

      As of today (2006-03-22) this bug is in the latest SVN source (and has been in
      previous versions as well).

      DelegatingConnection and PoolingConnection don't seem (from a quick glance) to
      have this problem.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              dpark@gelaed.com Derek Park
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: