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

Keyed pool usage description correction

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 2.4.2
    • 2.4.3
    • None

    Description

      This applies to GenericKeyedObjectPool.

      Please consider the following situation:

      1. A pool has been setup to blockWhenExhausted=true
      2. maxTotal=maxTotalPerKey=1
      3. no object has yet been added for any key
      4. two threads are running concurrently
      5. the first thread borrows key a
      6. the second thread borrows key b, but fails to create an object as the pool is now full, so it gets parked
      7. the first thread returns the object for its key(a) and also invalidates it

      At this point we must manually unpark the second thread, which is achieved by adding a new object for the key b(possibly from the first thread). This behaviour is not described in the documentation of the pool. One could assume that at step 6, the second thread will block at the object creation and then be woken up automatically after returnObject(when the returned object also gets invalidated and destroyed).

      Please add this information in the pool's description. Alternativley you could enchance the implementation to block at the creation - when the subpool is empty and there is no more space, and resume automatically from there, without the need of manual object addition.

      Attachments

        1. Test.java
          4 kB
          Ivan Iliev

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            iiliev2 Ivan Iliev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Issue deployment