Vincent Massol wrote:
> On Jul 29, 2008, at 11:10 PM, Artem Melentyev wrote:
> 
>> Vincent Massol wrote:
>>>
>>> On Jul 29, 2008, at 8:52 PM, amelentev (SVN) wrote:
>>>
>>>> Author: amelentev
>>>> Date: 2008-07-29 20:52:51 +0200 (Tue, 29 Jul 2008)
>>>> New Revision: 11561
>>>>
>>>> Modified:
>>>> platform/core/trunk/xwiki-core/src/main/resources/META-INF/plexus/
>>>> components.xml
>>>> Log:
>>>> XWIKI-2444: QueryManager in Store
>>>> set instantiation-strategy to per-lookup for prevent sharing of
>>>> query objects.
>>> We shouldn't do this IMO. Using a per lookup strategy with components
>>> is very very dangerous (I've experienced it several times). The
>>> problem is that you need to explicitely remove the components as
>>> otherwise you're creating a memory leak.
>> But how we should do instead?
>> Queries are not reuseable.
>> So we can't use Queries as components?
> 
> Plexus keeps an internal reference to these per lookup components so  
> they're not released automatically.
> 
> Personally I've been trying to stay away from per lookup component and  
> use only POJOs.
> 
> I'm fine if you want to keep it as a component but you *must* be  
> absolutely sure that you release them using componentManager.remove()  
> when they're not used anymore.

Where we should release it? after Query#execute ?
This is also potential memory leak  if someone forget to run #execute 
for some query.

Can we release them just after they created? (in QueryManager#createQuery)
This looks wrong, but works fine.

Can we configure component manager for not to store ref?

-- 
   Artem Melentyev
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to