[infinispan-dev] Management of shared caches

Brian Stansberry brian.stansberry at redhat.com
Fri Dec 11 15:37:55 EST 2009


Had a look at DefaultCacheManager today and I see it has no mechanism 
for controlling the stopping of shared caches. Multiple independent 
callers to getCache("foo") can get a ref to the foo cache, and then any 
of them can call stop() on it.

A few possibilities come to mind:

1) Add a releaseCache method, do some reference counting, and stop the 
cache when all refs are released. Remove the cache from the "caches" map.

2) And/or, wrap the cache in a wrapper whose stop() method doesn't call 
through to the wrapped cache until stop() is called on all wrappers

3) Advise in the javadoc that shared caches are supported, but if they 
are used it's the users responsibility to ensure that at least one but 
only one caller calls stop() on the cache. At least for the AS use 
cases, this should be OK, since an Infinispan Cache will be analogous to 
a JBC Region, and there's only one user for a given region.

-- 
Brian Stansberry
Lead, AS Clustering
JBoss by Red Hat



More information about the infinispan-dev mailing list