[infinispan-dev] configuring fetchInMemoryState for topology caches

Galder Zamarreño galder at redhat.com
Wed Jul 10 11:03:33 EDT 2013


On Jul 10, 2013, at 3:49 PM, Dan Berindei <dan.berindei at gmail.com> wrote:

> 
> 
> 
> On Tue, Jul 9, 2013 at 12:48 PM, Mircea Markus <mmarkus at redhat.com> wrote:
> 
> On 21 May 2013, at 17:09, Dan Berindei <dan.berindei at gmail.com> wrote:
> 
> > I wouldn't want to deprecate CCL, I think it definitely has a purpose - at least in invalidation mode.
> The only use case I'm aware of for invalidation is 2nd level cache and I don't think that needs a remote cache, Galder wdyt?
> 
> I don't know if 2nd level cache actually uses ClusterCacheLoader, but it could definitely use it without exposing the cache through HotRod.

Invalidation is indeed used by 2LC. It could be used by any application that uses Infinispan as a cache really.

ClusterCacheLoader is there to provide lazy-loading of data, either for invalidated or replicated caches. In the past, it was a good workaround if state transfer was slow.

Now, there's one situation where we definitely want to use ClusterCacheLoader with a replicated cache, and that's with the query cache [1]. The reason for that is that if you enable state transfer, it forces all replication calls to be synchronous (it used to be like this, not sure whether any more…), but in the query cache we want an asynchronous replicated cache, hence we use the CCL to retrieve data from other nodes.

[1] https://github.com/hibernate/hibernate-orm/blob/master/hibernate-infinispan/src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs.xml#L108

> 
> >
> > Even in replication mode, having a lazy alternative to state transfer may be useful. Maybe not for the topology cache, but it might make sense for large caches.
> 
> this makes me wonder: what would be the case in which one doesn't want to use state transfer for a distributed/replicated cache.

If the state is too big for a replicated cache, or if you want to have an asynchronous replicated cache.

> In replication mode, if the cache has a huge (non-shared) cache store, some users may prefer to disable fetchPersistentState and rely on ClusterCacheLoader instead for less frequently accessed keys.

I've never seen anyone use fetchPersistentState TBH. We brought it from JBoss Cache, but we should probably have ditched it.

> I don't know if it ever makes sense to use ClusterCacheLoader in distribution mode, since it always sends the ClusteredGetCommand to the entire cluster.

CCL and distribution do not make sense. Distribution already queries other nodes for data.

> 
> 
> Cheers
> Dan
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


--
Galder Zamarreño
galder at redhat.com
twitter.com/galderz

Project Lead, Escalante
http://escalante.io

Engineer, Infinispan
http://infinispan.org




More information about the infinispan-dev mailing list