[jbosscache-dev] Some new Cache usage questions

Manik Surtani manik at jboss.org
Tue Sep 5 09:52:57 EDT 2006


A Node is still just a wrapper.  Every time you try and do anything  
with it, calls are passed thru the interceptor stack to the TreeCache  
object.

If a Node no longer exists, a CacheException will be thrown.

Do we foresee this as a problem, and should we not be recommending  
caching Nodes?
--
Manik Surtani

Lead, JBoss Cache
JBoss, a division of Red Hat

Email: manik at jboss.org
Telephone: +44 7786 702 706
MSN: manik at surtani.org
Yahoo/AIM/Skype: maniksurtani


On 5 Sep 2006, at 14:47, Brian Stansberry wrote:

> Isn't caching a Node dangerous, as you have no way of knowing it  
> hasn't
> been removed from the tree?  Unless you add a CacheListener just for
> that.
>
> jbosscache-dev-bounces at lists.jboss.org wrote:
>> Use Cache for cache-wide operations like getRegion(), etc.
>>
>> Use Node to manipulate data in the node, retrieve child nodes, etc.
>> This way refs to Nodes - buckets of data storage - can be
>> cached since it is these that would be most frequently used.
>>
>>> It does. But then, does it mean I need to keep both the reference  
>>> for
>>> Cache and "parent" Node at the same time? Although Cache is a
>>> wrapper, it does have some additional APIs like evict and also
>>> getRegion() that doesn't exist in Node. Or what's your
>>> recommendation?
>>>
>>> Actually, currently I am keeping the CacheSPI reference (and also
>>> possibly NodeSPI in the future when it has life of its own)  
>>> within my
>>> code. Keeping the Node reference doesn't seem to make much sense to
>>> me, although this can be just a pattern for the customed cache
>>> provider (e.g., PojoCache).
>>>
>>> -Ben
>>>
>>> -----Original Message-----
>>> From: Manik Surtani [mailto:manik at jboss.org]
>>> Sent: Tuesday, September 05, 2006 12:10 AM
>>> To: Ben Wang
>>> Cc: Bela Ban; jbosscache-dev at lists.jboss.org
>>> Subject: Re: [jbosscache-dev] Some new Cache usage questions
>>>
>>>
>>> On 4 Sep 2006, at 16:58, Ben Wang wrote:
>>>
>>>> 1. I suspect people using JBC for session management purpose won't
>>>> store the Node ref but the Cache instead. Brian can say better but
>>>> for example of the http session, unless you store the root Node,
>>>> otherwise caching the children Node is not that useful.
>>>
>>> Node jSessionNode = Cache.getChild(Fqn.fromString("/ JSESSIONID"));
>>> // this can be cached... Node sessionNode =
>>> jSessionNode.getChild(Fqn.fromString (sessionId));  // this can be
>>> retrieved every time...
>>>
>>> Does this help in any way?
>>>
>>>
>>>>
>>>> 2. ic. Do we have explicit contract for Cache to be "root" Node
>>>> only? I mean, even getRoot() is just a self pointer, it still
>>>> serves the purpose, IMO.
>>>
>>>  From the javadocs: "The cache is essentially a wrapper around the
>>> default root Node."
>>>
>>>
>> http://labs.jboss.com/file-access/default/members/jbosscache/ 
>> freezone/
>>> docs/Habanero/api/org/jboss/cache/Cache.html
>>>
>>>
>>>>
>>>> -Ben
>>>>
>>>> -----Original Message-----
>>>> From: Manik Surtani [mailto:manik at jboss.org]
>>>> Sent: Monday, September 04, 2006 7:06 PM
>>>> To: Ben Wang
>>>> Cc: Bela Ban; jbosscache-dev at lists.jboss.org
>>>> Subject: Re: [jbosscache-dev] Some new Cache usage questions
>>>>
>>>> Not in your case, no.  But many other use cases will be able to
>>>> cache a node and use it directly.
>>>>
>>>> I too would rather keep the API clean in this regard. Also, calling
>>>> cache.getRoot() is redundant since the Cache interface is a wrapper
>>>> around the root Node.  In fact, I even think we should get rid of
>>>> the getRoot() method.
>>>>
>>>> Cheers,
>>>> --
>>>> Manik Surtani
>>>>
>>>> Lead, JBoss Cache
>>>> JBoss, a division of Red Hat
>>>>
>>>> Email: manik at jboss.org
>>>> Telephone: +44 7786 702 706
>>>> MSN: manik at surtani.org
>>>> Yahoo/AIM/Skype: maniksurtani
>>>>
>>>>
>>>> On 1 Sep 2006, at 15:49, Ben Wang wrote:
>>>>
>>>>> Thing is I only do put to specific fqn once. So caching it doesn't
>>>>> buy you anything.
>>>>>
>>>>> -----Original Message-----
>>>>> From: Bela Ban
>>>>> Sent: Friday, September 01, 2006 10:22 PM
>>>>> To: Ben Wang
>>>>> Cc: jbosscache-dev at lists.jboss.org
>>>>> Subject: Re: [jbosscache-dev] Some new Cache usage questions
>>>>>
>>>>> My 2 cents: I'd rather keep the API clean, at the expense of folks
>>>>> potentially writing wrapping code (like Ben).
>>>>>
>>>>> Your code samples look a bit weird:
>>>>> #1
>>>>> Why do you always get the child ? Can't you get the node and cache
>>>>> it, e.g. Node n=cache.getRoot().getChild(fqn);
>>>>> n.containsKey(PojoInstance.KEY)
>>>>>
>>>>> #2
>>>>> Same as for #1: you don't need to call cache.getRoot().getChild
>>>>> (fqn) all the time, for example in a loop, simply cache it
>>>>>
>>>>>
>>>>> Ben Wang wrote:
>>>>>> Manik,
>>>>>>
>>>>>> While trying to use the new API in PojoCache, I have found that I
>>>>>> need to:
>>>>>>
>>>>>> 1. To check if a attribute exist, I need to do:
>>>>>> cache_.getRoot().getChild(fqn_).getData().values().contains
>>>>>> (PojoInstance.KEY)
>>>>>>
>>>>>> 2. And then, I need to do a lot of cache_.getRoot().getChild
>>>>>> (fqn).put(map)
>>>>>>
>>>>>> So looks like I need to write a wrapper layer just to provide
>>>>>> straight api for:
>>>>>>
>>>>>> Cache_.exists(fqn, key)
>>>>>> And
>>>>>> Cache_.put(fqn, map)
>>>>>>
>>>>>> If this is rare case, then I will bite the bullet. But if it is a
>>>>>> common one, then that really begs the question whether we should
>>>>>> provide additional apis or not?
>>>>>
>>>>> --
>>>>> Bela Ban
>>>>> Lead JGroups / Manager JBoss Clustering Group JBoss - a division
>>>>> of Red Hat
>>>>>
>>>>> _______________________________________________
>>>>> jbosscache-dev mailing list
>>>>> jbosscache-dev at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/jbosscache-dev
>>>>
>>>
>>
>> _______________________________________________
>> jbosscache-dev mailing list
>> jbosscache-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jbosscache-dev
>
>
>
> Brian Stansberry
> Lead, AS Clustering
> JBoss, a division of Red Hat
> Ph: 510-396-3864
> skype: bstansberry




More information about the jbosscache-dev mailing list