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: dev-unsubscr...@ibatis.apache.org For additional commands, e-mail: dev-h...@ibatis.apache.org