Class NonStrictAccessDelegate

java.lang.Object
org.infinispan.hibernate.cache.commons.access.NonStrictAccessDelegate
All Implemented Interfaces:
AccessDelegate

public class NonStrictAccessDelegate extends Object implements AccessDelegate
Access delegate that relaxes the consistency a bit: stale reads are prohibited only after the transaction commits. This should also be able to work with async caches, and that would allow the replication delay even after the commit.
Author:
Radim Vansa <rvansa@redhat.com>
  • Field Details

  • Constructor Details

  • Method Details

    • get

      public Object get(Object session, Object key, long txTimestamp) throws org.hibernate.cache.CacheException
      Specified by:
      get in interface AccessDelegate
      Throws:
      org.hibernate.cache.CacheException
    • putFromLoad

      public boolean putFromLoad(Object session, Object key, Object value, long txTimestamp, Object version)
      Description copied from interface: AccessDelegate
      Attempt to cache an object, after loading from the database.
      Specified by:
      putFromLoad in interface AccessDelegate
      Parameters:
      session - Current session
      key - The item key
      value - The item
      txTimestamp - a timestamp prior to the transaction start time
      version - the item version number
      Returns:
      true if the object was successfully cached
    • putFromLoad

      public boolean putFromLoad(Object session, Object key, Object value, long txTimestamp, Object version, boolean minimalPutOverride) throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Attempt to cache an object, after loading from the database, explicitly specifying the minimalPut behavior.
      Specified by:
      putFromLoad in interface AccessDelegate
      Parameters:
      session - Current session.
      key - The item key
      value - The item
      txTimestamp - a timestamp prior to the transaction start time
      version - the item version number
      minimalPutOverride - Explicit minimalPut flag
      Returns:
      true if the object was successfully cached
      Throws:
      org.hibernate.cache.CacheException - Propogated from underlying Region
    • insert

      public boolean insert(Object session, Object key, Object value, Object version) throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Called after an item has been inserted (before the transaction completes), instead of calling evict().
      Specified by:
      insert in interface AccessDelegate
      Parameters:
      session - Current session
      key - The item key
      value - The item
      version - The item's version value
      Returns:
      Were the contents of the cache actual changed by this operation?
      Throws:
      org.hibernate.cache.CacheException - if the insert fails
    • update

      public boolean update(Object session, Object key, Object value, Object currentVersion, Object previousVersion) throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Called after an item has been updated (before the transaction completes), instead of calling evict().
      Specified by:
      update in interface AccessDelegate
      Parameters:
      session - Current session
      key - The item key
      value - The item
      currentVersion - The item's current version value
      previousVersion - The item's previous version value
      Returns:
      Whether the contents of the cache actual changed by this operation
      Throws:
      org.hibernate.cache.CacheException - if the update fails
    • remove

      public void remove(Object session, Object key) throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Called after an item has become stale (before the transaction completes).
      Specified by:
      remove in interface AccessDelegate
      Parameters:
      session - Current session
      key - The key of the item to remove
      Throws:
      org.hibernate.cache.CacheException - if removing the cached item fails
    • lockAll

      public void lockAll() throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Called just before the delegate will have all entries removed. Any work to prevent concurrent modifications while this occurs should happen here
      Specified by:
      lockAll in interface AccessDelegate
      Throws:
      org.hibernate.cache.CacheException - if locking had an issue
    • unlockAll

      public void unlockAll() throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Called just after the delegate had all entries removed via AccessDelegate.removeAll(). Any work required to allow for new modifications to happen should be done here
      Specified by:
      unlockAll in interface AccessDelegate
      Throws:
      org.hibernate.cache.CacheException - if unlocking had an issue
    • removeAll

      public void removeAll() throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Called to evict data from the entire region
      Specified by:
      removeAll in interface AccessDelegate
      Throws:
      org.hibernate.cache.CacheException - if eviction the region fails
    • evict

      public void evict(Object key) throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Forcibly evict an item from the cache immediately without regard for transaction isolation.
      Specified by:
      evict in interface AccessDelegate
      Parameters:
      key - The key of the item to remove
      Throws:
      org.hibernate.cache.CacheException - if evicting the item fails
    • evictAll

      public void evictAll() throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Forcibly evict all items from the cache immediately without regard for transaction isolation.
      Specified by:
      evictAll in interface AccessDelegate
      Throws:
      org.hibernate.cache.CacheException - if evicting items fails
    • unlockItem

      public void unlockItem(Object session, Object key) throws org.hibernate.cache.CacheException
      Description copied from interface: AccessDelegate
      Called when we have finished the attempted update/delete (which may or may not have been successful), after transaction completion. This method is used by "asynchronous" concurrency strategies.
      Specified by:
      unlockItem in interface AccessDelegate
      key - The item key
      Throws:
      org.hibernate.cache.CacheException - Propogated from underlying Region
    • afterInsert

      public boolean afterInsert(Object session, Object key, Object value, Object version)
      Description copied from interface: AccessDelegate
      Called after an item has been inserted (after the transaction completes), instead of calling release(). This method is used by "asynchronous" concurrency strategies.
      Specified by:
      afterInsert in interface AccessDelegate
      key - The item key
      value - The item
      version - The item's version value
      Returns:
      Were the contents of the cache actual changed by this operation?
    • afterUpdate

      public boolean afterUpdate(Object session, Object key, Object value, Object currentVersion, Object previousVersion, org.hibernate.cache.spi.access.SoftLock lock)
      Description copied from interface: AccessDelegate
      Called after an item has been updated (after the transaction completes), instead of calling release(). This method is used by "asynchronous" concurrency strategies.
      Specified by:
      afterUpdate in interface AccessDelegate
      key - The item key
      value - The item
      currentVersion - The item's current version value
      previousVersion - The item's previous version value
      lock - The lock previously obtained from #lockItem
      Returns:
      Were the contents of the cache actual changed by this operation?
    • getVersion

      protected Object getVersion(Object value)