Subtleties of NOT_SHARED DRS/Dynacache Caches
kgibm 0600027VAP Visits (2652)
The WAS Data Replication Service (DRS) (, ) provides a mechanism to share data across JVMs. For example, this can be used by Dynacache for servlet caching, or by applications in an object cache using the DistributedMap API. There are a lot of knobs including security, invalidations, disk offload, different mechanisms and topologies for sharing, dependencies, timeouts, ring buffers, tuning such as batching, and more. DRS works on top of the High Availability Manager and DCS.
The sharing mechanisms are: Both Push and Pull (PUSH_PULL), Push Only (PUSH), and Not Shared (NOT_SHARED) (and Pull which is deprecated). Some customers (and products like WebSphere Portal Server) may use NOT_SHARED in the case that not all of the cache entries have to be in each JVM, but the cache entries should be consistent. This is because NOT_SHARED caches still propagate invalidations of cache entries: "When you use the Not Shared setting... invalidations are propagated to other servants or servers." (htt
There are two major types of invalidations: implicit and explicit. Implicit invalidations occur when a cache entry times out (if it has a time out) or it gets pushed out of the cache by the Least Recently Used (LRU) algorithm if the cache is full (based on the maximum cache size). Explicit invalidations occur when someone calls the DistributedMap invalidate* methods (for example, on a user logout) or through the same thing on a dependency. In some cases, implicit invalidations are not necessary to propagate, such as in large WebSphere Portal clusters: http
I highly recommend you follow Rohit Kelapure's Dynacache blog (he has been one of the WAS developers in the DRS/Dynacache components): http