Uploaded image for project: 'Commons Pool'
  1. Commons Pool
  2. POOL-327

GKOP: returnObject does not unblock threads waiting in borrowObject if maxIdle=0

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.4.2
    • Fix Version/s: 2.6.1
    • Labels:
      None

      Description

      If idle objects are disabled by maxIdle=0 a thread blocked in borrowObject is not notified if another thread returns an object.

      Attached is a unit test (327-maxIdle0-test.patch) that demonstrates the issue. I tried a similar test on GenericKeyedObjectPool as well which not seems to be affected by this issue.

      I also attached two possible solutions for this issue.
      The first (327-maxIdle0.patch) just notifies a potentially waiting thread in the affected returnObject code branch. (similar to POOL-240)

      The second (327-maxIdle0-alternativ.patch) checks for waiting threads every time an object get destroyed. But this may introduce undesired behavior in other functions. (like clear or evict)

        Attachments

        1. 327-maxIdle0.patch
          1 kB
          Paul Pazderski
        2. 327-maxIdle0-test.patch
          2 kB
          Paul Pazderski
        3. 327-maxIdle0-alternativ.patch
          2 kB
          Paul Pazderski

          Issue Links

            Activity

              People

              • Assignee:
                struberg Mark Struberg
                Reporter:
                Paul Pazderski Paul Pazderski
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: