Commons Dbcp
  1. Commons Dbcp
  2. DBCP-318

PerUserPoolDataSource.getPooledConnectionAndInfo multi-threading bug

    Details

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

      Description

      PerUserPoolDataSource.getPooledConnectionAndInfo(user,pass) has the code:

      Object pool = pools.get(key); // (1) pools = instance variable
      synchronized(this) {
          if (pool == null) {
              try {
                  registerPool(username, password);
                  pool = pools.get(key);
      [...]
      

      The first get() call can return null to multiple threads, so multiple threads can register the pool.
      This allows more than maxActive() connections to be returned.

        Activity

        Sebb created issue -
        Sebb made changes -
        Field Original Value New Value
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Phil Steitz made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

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

            Dates

            • Created:
              Updated:
              Resolved:

              Development