commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simone Tripodi <simone.trip...@gmail.com>
Subject Re: [GenericObjectPool] problem with numActive counter
Date Fri, 15 Jan 2010 10:37:44 GMT
In the example, the catch group catches exceptions that could be
thrown by the object _use_, I *suppose* whenever you catch a
java.util.NoSuchElementException you don't need to invalidate the
object, that's what Mark was pointing.
let us know, all the best,
Simo

On Fri, Jan 15, 2010 at 11:26 AM, Daniele Bonetto
<daniele.bonetto@dnshosting.it> wrote:
> Ok, if the borrow throws an exceptin the obj was null.
> But i'm not sure that the invalidate was unnecessary. take a look at this:
> http://commons.apache.org/pool/apidocs/org/apache/commons/pool/ObjectPool.html
>
> Example of use:
>
>  Object obj =|null|;
>
>  |try|  {
>     obj = pool.borrowObject();
>     |//...use the object...|
>  }|catch|(Exception e) {
>     |// invalidate the object|
>     pool.invalidateObject(obj);
>     |// do not return the object to the pool twice|
>     obj =|null|;
>  }|finally|  {
>     |// make sure the object is returned to the pool|
>     |if|(|null|  != obj) {
>         pool.returnObject(obj);
>    }
>  }
>
>
> In this example u can see that if the borrow throws an exception u have to
> invalidate the object from pool.
>
> So. What happends to the object that i tried to borrow?
>
> I have maxActive = 2 and without invalidate if i try more than 2 times the
> pool returns always:
>
> java.util.NoSuchElementException: Timeout waiting for idle object
>
>
> I think that without the invalidate the object remains in idle and it locks
> my pool... With invalidateObject the pool works correctly, but the counter
> wasn't correct.
>
> Thanks guys for your replies.
>
> Byez!
> Daniele Bonetto
>
>
>
>
> Il 15/01/2010 11.08, Mark Thomas ha scritto:
>>
>> On 15/01/2010 10:03, Simone Tripodi wrote:
>>
>>>
>>> Ciao Daniele ;)
>>> First, I suggest you to start the subject line with [componentname],
>>> i.e. [POOL] if you're referring commons-pool, otherwise people risk to
>>> get confused and not able to reply.
>>>
>>> I don't know the Pool so deeply and maybe I didn't understand the
>>> problem, but reading your code I'm worried 'invalidateObject()' always
>>> takes 'null' as argument... take a look at this with the
>>> logger/debugger.
>>>
>>
>> Yep. That's the problem. That call is almost certainly unnecessary. If
>> want to keep it, wrap it in a<code>if  (obj != null)</code>  test.
>>
>> Mark
>>
>>
>>>
>>> All the best,
>>> Simo
>>>
>>> On Fri, Jan 15, 2010 at 10:53 AM, Daniele Bonetto
>>> <daniele.bonetto@dnshosting.it>  wrote:
>>>
>>>>
>>>> Hello everyone!
>>>>
>>>> I notice a problem using GenericObjectPool.
>>>>
>>>> My code is like this:
>>>>
>>>>        Object obj = null;
>>>>        try
>>>>        {
>>>>                obj = this.borrowObject();
>>>>        }
>>>>        catch(NoSuchElementException ex)
>>>>        {
>>>>            log.error("no such element exception", ex);
>>>>            this.invalidateObject(obj);
>>>>            throw new NicProviderPoolException("no such element
>>>> exception",
>>>> ex);
>>>>        }
>>>>        catch(Exception ex)
>>>>        {
>>>>            log.error("exception", ex);
>>>>            this.invalidateObject(obj);
>>>>            throw new Exception("exception", ex);
>>>>        }
>>>>        return (NicProvider)obj;
>>>>
>>>> When the borrowObject throws an exception and i invalidate the
>>>> borrowedObject the numActive counter was decreased by 1. The problem is
>>>> that
>>>> the counter will not be increased in case of exception... So, my
>>>> numActive
>>>> counter will be -1 and isn't correct.
>>>>
>>>> Someone has noticed this problem too?
>>>>
>>>> Thanks in advance,
>>>> Byez!
>>>>
>>>> Daniele Bonetto
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>
>>
>>
>>
>



-- 
http://people.apache.org/~simonetripodi/

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message