Interface InternalExpirationManager<K,V>

All Superinterfaces:
ExpirationManager<K,V>
All Known Implementing Classes:
ClusterExpirationManager, ExpirationManagerImpl, TxClusterExpirationManager

public interface InternalExpirationManager<K,V> extends ExpirationManager<K,V>
Interface describing the internal operations for the the ExpirationManager.
Since:
9.3
Author:
wburns
  • Method Details

    • entryExpiredInMemory

      CompletableFuture<Boolean> entryExpiredInMemory(InternalCacheEntry<K,V> entry, long currentTime, boolean isWrite)
      This should be invoked passing in an entry that is now expired. This method may attempt to lock this key to preserve atomicity. This method should be invoked when an entry was read via get but found to be expired.

      This method returns true if the entry was removed due to expiration or false if the entry was not removed due to expiration

      If hasLock is true, this method assumes that the caller has the lock for the key and it must allow the expiration to occur, ie. returned CompletableFuture has completed, before the lock is released. Failure to do so may cause inconsistency in data.

      Parameters:
      entry - the entry that has expired
      currentTime - the current time when it expired
      isWrite - if the expiration was found during a write operation
      Returns:
      if this entry actually expired or not
    • handleInStoreExpirationInternal

      CompletionStage<Void> handleInStoreExpirationInternal(K key)
      This is to be invoked when a store entry expires. This method may attempt to lock this key to preserve atomicity.

      Note this method doesn't currently take a InternalCacheEntry and this is due to a limitation in the cache store API. This may cause some values to be removed if they were updated at the same time.

      Parameters:
      key - the key of the expired entry This method will be renamed to handleInStoreExpiration when the method can be removed from ExpirationManager
    • handleInStoreExpirationInternal

      CompletionStage<Void> handleInStoreExpirationInternal(MarshallableEntry<K,V> marshalledEntry)
      This is to be invoked when a store entry expires and the value and/or metadata is available to be used.
      Parameters:
      marshalledEntry - the entry that can be unmarshalled as needed This method will be renamed to handleInStoreExpiration when the method can be removed from ExpirationManager
    • handlePossibleExpiration

      CompletionStage<Boolean> handlePossibleExpiration(InternalCacheEntry<K,V> entry, int segment, boolean isWrite)
      Handles processing for an entry that may be expired. This will remove the entry if it is expired, otherwise may touch if it uses max idle.
      Parameters:
      entry - entry that may be expired
      segment - the segment of the entry
      isWrite - whether the command that saw the expired value was a write or not
      Returns:
      a stage that will complete with true if the entry was expired and false otherwise
    • addInternalListener

      void addInternalListener(InternalExpirationManager.ExpirationConsumer<K,V> consumer)
      Adds an InternalExpirationManager.ExpirationConsumer to be invoked when an entry is expired.

      It exposes the PrivateMetadata

      Parameters:
      consumer - The instance to invoke.
    • removeInternalListener

      void removeInternalListener(Object listener)
      Removes a previous registered InternalExpirationManager.ExpirationConsumer.
      Parameters:
      listener - The instance to remove.