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

[dbcp] PoolGuardConnectionWrapper violates close() contract

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.3
    • None
    • Operating System: All
      Platform: All

    • 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

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

            Dates

              Created:
              Updated:
              Resolved: