You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Christian Peter (Commented) (JIRA)" <ji...@apache.org> on 2011/10/28 16:32:32 UTC

[jira] [Commented] (POOL-192) GenericKeyedObjectPool: clear() clears the keyed pool but does not decrease the item counter

    [ https://issues.apache.org/jira/browse/POOL-192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13138398#comment-13138398 ] 

Christian Peter commented on POOL-192:
--------------------------------------

The value of ??_totalInternalProcessing?? is increased by the number of elements in the queue in method ??clear(Object key)??, just before ??destroy?? is called.

As the ObjectQueue for the key was removed from the map in method ??clear??, the object for the key is always null in method ??destroy??.

Therefore ??_totalInternalProcessing?? is never decreased there which leads to an incorrect value of ??_totalInternalProcessing??.

Suggested fix in ??destroy(Map m, KeyedPoolablabeObjectFactroy factory)??:

??ObjectQueue objectQueue = (ObjectQueue) _poolMap.get(key);??
??if (objectQueue != null) {??
   ...
??}??
*else {*
    *_totalInternalProcessing--;*
*}*

                
> GenericKeyedObjectPool: clear() clears the keyed pool but does not decrease the item counter
> --------------------------------------------------------------------------------------------
>
>                 Key: POOL-192
>                 URL: https://issues.apache.org/jira/browse/POOL-192
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 1.5.6
>            Reporter: Helge Dannenberg
>
> If function 'clear(Object key)' in GenericKeyedObjectPool is called onto a keyed pool, the ObjectQueue (= the keyed pool) is removed from the pool list. 
> Its items are deleteded in the function 'destroy()' afterwards. But as the ObjectQueue is already removed, the itemcounter _totalInternalProcessing is 
> never decreased.
> As a result of this bug the pool exhausts even if the pool is empty.
> The solution is to decrease the counter _totalInternalProcessing in 'destroy()' also if ObjectQueue in null.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira