On Thu, Aug 25, 2011 at 3:24 PM, Fabio Mancinelli
<[email protected]> wrote:
> On Thu, Aug 25, 2011 at 3:02 PM, Thomas Mortagne
> <[email protected]> wrote:
>> On Thu, Aug 25, 2011 at 2:23 PM, Fabio Mancinelli
>> <[email protected]> wrote:
>>> On Thu, Aug 25, 2011 at 12:18 PM, Caleb James DeLisle
>>> <[email protected]> wrote:
>>>>
>>>>
>>>> On 08/25/2011 05:56 AM, Thomas Mortagne wrote:
>>>>> On Thu, Aug 25, 2011 at 12:00 PM, Caleb James DeLisle
>>>>> <[email protected]> wrote:
>>>>>> In order to fix a problem with the cache, I would like to add a pointer 
>>>>>> type to the storage api.
>>>>>> The problem with the cache is there are multiple names which, when asked 
>>>>>> of the persistent store,
>>>>>> return the same document. There is no effective way to know what all 
>>>>>> names which will return that
>>>>>> document. When a document is modified, it is removed from the cache but 
>>>>>> the only version removed is it's
>>>>>> "real" name. All of the other names for it linger in the cache eating up 
>>>>>> memory and threatening to
>>>>>> provide someone stale data.
>>>>>> Instead of caching the document, we could cache a pointer to the 
>>>>>> document and when it became stale,
>>>>>> the pointer could be set to null and then any other name under which 
>>>>>> that document was cached would look
>>>>>> up a null pointer and the cache logic could remove it.
>>>>>>
>>>>>> I would like to add it to xwiki-platform-store-api module and it will 
>>>>>> look roughly like this:
>>>>>>
>>>>>> package org.xwiki.store;
>>>>>>
>>>>>> public final class Pointer<T>
>>>>>> {
>>>>>>    /** The thing which this pointer points to. */
>>>>>>    public T target;
>>>>>> }
>>>>>>
>>>>>>
>>>>>> WDYT?
>>>>>
>>>>> Why is there several cache keys for the same document ? Can't we make
>>>>> sure a same document always use the same key ?
>>>>
>>>> When you get a document and put it in the cache, you can put it under it's 
>>>> canonical key which might,
>>>> for instance, be xwiki:Main.WebHome:en but most of the requests for that 
>>>> document will go to
>>>> xwiki:Main.WebHome (which returns the same document from the store). If 
>>>> you refuse to cache under
>>>> any key but the canonical key, you will defeat most of the cache's 
>>>> usefulness.
>>>>
>>>> BTW: This is the issue: http://jira.xwiki.org/jira/browse/XWIKI-6170
>>>>
>>> Couldn't you just complete the ID with the language information when
>>> it's missing before querying the cache?
>>
>> The problem is that each document can have its own default language so
>> there is no way to complete the language information without the
>> proper XWikiDocument coming from the database.
>>
> I see.
> Well a quick&dirty solution would be to cache also the default language :)
>
> xwiki:Space.Document:defaultLanguage -> en
> xwiki:Space.Document:en -> document in english
> xwiki:Space.Document:fr -> document in french
> ...
>
> So when a document ID doesn't have the language specified, you can
> retrieve the information from the cache and complete the ID.
> This is an additional get on the cache which could introduce a
> performance issue: I don't know how many times an incomplete ID is
> used for retrieving a document.

Sure but that's not really the issue here, what Caleb wants is to make
sure every entries of the same document are removed from the cache
when one is removed.

>
> -Fabio
>
>>>
>>> -Fabio
>>>
>>>> Caleb
>>>>
>>>>>
>>>>>>
>>>>>> Caleb
>>>>>>
>>>>>> _______________________________________________
>>>>>> devs mailing list
>>>>>> [email protected]
>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> devs mailing list
>>>> [email protected]
>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>
>>> _______________________________________________
>>> devs mailing list
>>> [email protected]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>
>>
>>
>>
>> --
>> Thomas Mortagne
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



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

Reply via email to