Affects Version/s: 2.4.2
Fix Version/s: 2.6.1
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
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)