Class ClusterExpirationManager<K,V>

java.lang.Object
org.infinispan.expiration.impl.ExpirationManagerImpl<K,V>
org.infinispan.expiration.impl.ClusterExpirationManager<K,V>
Type Parameters:
K -
V -
All Implemented Interfaces:
ExpirationManager<K,V>, InternalExpirationManager<K,V>
Direct Known Subclasses:
TxClusterExpirationManager

@ThreadSafe public class ClusterExpirationManager<K,V> extends ExpirationManagerImpl<K,V>
Allows for cluster based expirations to occur. This provides guarantees that when an entry is expired that it will expire that entry across the entire cluster at once. This requires obtaining the lock for said entry before expiration is performed. Since expiration can occur without holding onto the lock it is possible for an expiration to occur immediately after a value has been updated. This can cause a premature expiration to occur. Attempts are made to prevent this by using the expired entry's value and lifespan to limit this expiration so it only happens in a smaller amount of cases.

Cache stores however do not supply the value or metadata information which means if an entry is purged from the cache store that it will forcibly remove the value even if a concurrent write updated it just before. This will be addressed by future SPI changes to the cache store.