[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openejb-development
Subject:    Re: Bean-pool Leak : OPENEJB-976
From:       Bharath Ganesh <bharath () apache ! org>
Date:       2009-04-29 11:16:33
Message-ID: 5dc0f8d50904290404t7d1d5e51u92331f66109dc542 () mail ! gmail ! com
[Download RAW message or body]


Attached the patch for this in JIRA.

On Wed, Apr 22, 2009 at 2:39 AM, David Blevins <david.blevins@visi.com>wrote:

> Had a look through the code and it seems the design doesn't leave for much
> of a choice other than the thread local.  If you still have time to tackle
> it, go for it.  It'll definitely solve the issue.
>
> Maybe down the line we can look at reworking this code to be a bit less
> awkward and avoid the thread local.
>
> -David
>
>
> On Apr 12, 2009, at 4:12 PM, David Blevins wrote:
>
>  Taking a look at what we did in 3.0, which had simpler code for handling
>> some of this stuff.  Intellij is not behaving though and seems to refuse to
>> generate a project that works for the 3.0.x branch.
>>
>> Would be great to get by without a thread local and just a stronger try
>> catch block, but it might be a bigger change.
>>
>> -David
>>
>> On Apr 12, 2009, at 2:12 AM, Bharath Ganesh wrote:
>>
>>  something like - "boolean discardInstance". This boolean could be set to
>>>>>
>>>> false when an exception occurs during the call flow.
>>> Set to "true" :-)
>>>
>>> On Sun, Apr 12, 2009 at 1:31 PM, Bharath Ganesh <bharath@apache.org>
>>> wrote:
>>>
>>>  Hello,
>>>>
>>>> I was looking at Jira OpenEJB-976 [1], the bean pool leak issue when a
>>>> RuntimeException is thrown during txPolicy.commit(). (See
>>>> *StatelessContainer
>>>> # invoke()* method)
>>>> Currently there are a lot of places where we do *discardInstance *and
>>>> *poolInstance.
>>>> *It will be a nice idea to refactor this a bit to make the post-Invoke
>>>> pool management at a single place - The ideal place being the *finally
>>>> *block
>>>> in the container's *invoke() *method, just before
>>>> *ThreadContext.exit(oldCallContext).
>>>> *
>>>>
>>>> For this to happen, we would have to add a state to callContext
>>>> (ThreadContext), something like - "boolean discardInstance". This
>>>> boolean
>>>> could be set to false whenever an exception occurs during the call flow.
>>>> At
>>>> the end of the call, depending on this boolen we take a decision to add
>>>> the
>>>> instance back to pool or to discard it. If people are okay, I am ready
>>>> to
>>>> submit a patch.
>>>>
>>>> Thanks,
>>>> Bharath
>>>>
>>>>
>>>>
>>>> [1] http://issues.apache.org/jira/browse/OPENEJB-976
>>>>
>>>>
>>
>>
>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic