Good points. I think the only reason hasKey exists is to support cached null values. But that said, I believe in iBATIS 2 I used a NULL_OBJECT value to represent the difference between "yes I'm cached, and I'm null" vs. "I'm not cached".
So I think there definitely is something to look at here. Clinton On Thu, Dec 31, 2009 at 5:38 AM, Simone Tripodi <simone.trip...@gmail.com>wrote: > Hi all guys, > since I've been integrating 3rd part caching solutions[1] in iBatis3, > I started thinking about the use of method in the Cache interface: > > org.apache.ibatis.cache.Cache#hasKey() > > Honestly, I'm a little scared about the use for a key check, as it may > expire between checking for the key, and whatever you want to do with > the stored object, and produce a race condition :( > I'd propose to remove this method, and let to the layer built on top > of cache interface checking if the retrieved object is not null. > > Indeed, some distribuited and scalable caching servers like > memcached[2] don't provide methods to key checking, because of the > reason above. Moreover, in this scenario, the only way I have to check > if a key is present in the cache, is getting the object, and checking > it is null. But let's suppose I've a cached Object of 10M size, > checking first and then getting if present, causes 20M net traffic :( > > Please don't get me wrong, I don't want to criticize the excellent > work you've been doing - I don't use different persistence layer than > iBatis! - but since iBatis is largely used in production environments, > I would encourage the community to be sensible to this kind of > potential issues. > > What do you think about it? Have a nice end of the year party and see > you next year! :D > Best regards, > Simone Tripodi > > [1] http://ibaguice.googlecode.com/svn/site/1.0-SNAPSHOT/caching.html > [2] http://memcached.org/ > > -- > http://www.google.com/profiles/simone.tripodi > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > For additional commands, e-mail: user-java-h...@ibatis.apache.org > >