[infinispan-dev] InternalCacheValue, Marshalling and Cache Stores

Mircea Markus mircea.markus at jboss.com
Mon Jun 1 10:18:53 EDT 2009


I've just 'migrated' JdbcStringBasedCacheStore and ClusteredCacheLoader 
(including ClusterGetCommand).

Manik Surtani wrote:
> As pointed out by genman, the use of InternalCacheEntries (ICEs) in 
> certain cache stores can lead to unnecessary marshalling of a key 
> twice, impacting both time to marshall and space consumed by the 
> resulting byte stream.
>
> Cache stores specifically affected are the JdbcStringBasedCacheStore, 
> BdbjeCacheStore, JdbmCacheStore and ClusteredCacheLoader.
>
> The ClusteredGetCommand - used by both the ClusteredCacheLoader as 
> well as the DistributionInterceptor for remote lookups - is also 
> affected.  There is no point in a remote host marshalling the key in 
> ICE as a part of the response stream, the caller already has the key 
> as it was a part of the request.
>
> All the same, we cannot remove the key portion of ICE or exclude it 
> from marshalling as it is needed for other purposes such as state 
> transfer.  Bucket-based cache stores too require the key to be stored 
> with the entry.
>
> So to work around this, I have provided an additional interface: 
> InternalCacheValue (ICV).  This is a representation of a value (+ any 
> information pertaining to expiry).  So essentially all the stuff in an 
> ICE minus the key.
>
> An ICV is obtained by invoking ICE.toInternalCacheValue().  The cache 
> stores mentioned above - and ClusteredGetCommand - should make sure 
> they marshall ICVs rather than ICEs.
>
> When loading entries, an ICE can be created by using 
> ICV.toInternalCacheEntry(Object key).
>
> Could the respective authors of the stores above please modify their 
> code accordingly - I've just checked in the ICV changes in trunk.
>
> Cheers
> -- 
> Manik Surtani
> manik at jboss.org
> Lead, Infinispan
> Lead, JBoss Cache
> http://www.infinispan.org
> http://www.jbosscache.org
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev




More information about the infinispan-dev mailing list