On Thu, Aug 25, 2011 at 12:18 PM, Caleb James
DeLisle
<calebdelisle(a)lavabit.com> wrote:
On 08/25/2011 05:56 AM, Thomas Mortagne wrote:
On Thu, Aug 25, 2011 at 12:00 PM, Caleb James
DeLisle
<calebdelisle(a)lavabit.com> 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?