Class 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>
    • Method Detail

      • 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
      • 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)