Commons Dbcp
  1. Commons Dbcp
  2. DBCP-5

[dbcp] PoolGuardConnectionWrapper violates close() contract

    Details

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

      Operating System: All
      Platform: All

      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.

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Unassigned
            Reporter:
            Derek Park
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development