commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Thomas (JIRA)" <>
Subject [jira] [Resolved] (POOL-310) Keyed pool usage description correction
Date Wed, 16 Mar 2016 20:21:33 GMT


Mark Thomas resolved POOL-310.
    Resolution: Cannot Reproduce

A quick code inspection suggests that GKOP does not behave in the way described.

A test case confirm this.

IF you can provide a test case that demonstrates an issue then please re-open this issue and
provide it.

> Keyed pool usage description correction
> ---------------------------------------
>                 Key: POOL-310
>                 URL:
>             Project: Commons Pool
>          Issue Type: Improvement
>    Affects Versions: 2.4.2
>            Reporter: Ivan Iliev
>            Priority: Minor
> 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.

This message was sent by Atlassian JIRA

View raw message