Class ExtensibleConfigurableCacheFactory.Manager

    • Constructor Detail

      • Manager

        public Manager​(ExtensibleConfigurableCacheFactory factory)
        Construct the backing map manager.
        Parameters:
        factory - the factory associated with this manager
    • Method Detail

      • init

        public void init​(BackingMapManagerContext context)
        Called by a CacheService to indicate to this manager that the manager is being associated with the CacheService. This method is called once immediately upon the startup of the CacheService, before any NamedCache objects are created by the CacheService.

        Important note: BackingMapManager cannot be associated with more then one instance of a CacheService. However, in a situation when a CacheService automatically restarts, it is possible that this manager instance is re-used by a newly created (restarted) CacheService calling this method once again providing a new context.

        Important note: BackingMapManager cannot be associated with more than one instance of a CacheService. However, in a situation when a CacheService automatically restarts, it is possible that this manager instance is re-used by a newly created (restarted) CacheService calling this method once again providing a new context.

        Specified by:
        init in interface BackingMapManager
        Overrides:
        init in class AbstractBackingMapManager
        Parameters:
        context - the BackingMapManagerContext object for this BackingMapManager
      • instantiateBackingMap

        public Map instantiateBackingMap​(String sName)
        Instantiate a [thread safe] Map that should be used by a CacheService to store cached values for a NamedCache with the specified name.

        If the contents of the Map can be modified by anything other than the CacheService itself (e.g. if the Map automatically expires its entries periodically or size-limits its contents), then the returned object must implement the ObservableMap interface.

        Parameters:
        sName - the name of the NamedCache for which this backing map is being created
        Returns:
        an object implementing the Map interface that will provide backing storage for the specified cache name
      • isBackingMapPersistent

        public boolean isBackingMapPersistent​(String sName)
        Determine if the contents of the Map that is used by a CacheService to store cached values for a NamedCache with the specified name should be persisted.
        Parameters:
        sName - the name of the NamedCache
        Returns:
        true if the CacheService should persist the backing storage of the specified NamedCache
      • isBackingMapSlidingExpiry

        public boolean isBackingMapSlidingExpiry​(String sName)
        Determine if the Map that is used by a CacheService to store cached values for a NamedCache with specified name enables the sliding expiry - the expiry delay being extended by the read operations.
        Parameters:
        sName - the name of the NamedCache
        Returns:
        true if the backing map of the specified NamedCache enables the sliding expiry
      • getReadLocator

        public BiFunction<Ownership,​PartitionedService,​Member> getReadLocator​(String sName)
        Description copied from interface: BackingMapManager
        Return a function that when called will return a member given the current partition owners and service, or null if the service should target the primary. This function is called by the respective service to target read requests at the relevant member, and can be specific to a cache.

        An implementation can return any member in the ownership chain, inferring a tolerance to stale reads when a backup (non-primary) is targeted. This may be possible as the primary (or other backups) process future changes while the member that performed the read (and was chosen by the returned function) has not.

        There are several benefits in targeting backups for reads including balancing load and latency. For example, the latter can be achieved by targeting the read to a backup that resides on the same machine, rack or site. The default implementation allows this to be chosen via configuration.

        Parameters:
        sName - the name of the NamedCache
        Returns:
        a function that when called will return a member given the current partition owners and service, or null if the service should target the primary
      • instantiateBackupMap

        public Map instantiateBackupMap​(String sName)
        Instantiate a [thread safe] Map that should be used by a CacheService to store cached values for a NamedCache with the specified name.
        Parameters:
        sName - the name of the NamedCache for which this map is being created
        Returns:
        an object implementing the Map interface that will provide backing storage for the specified cache name
      • releaseBackupMap

        public void releaseBackupMap​(String sName,
                                     Map map,
                                     Map mapListeners)
        Release the specified Map that was created using the instantiateBackupMap(String) method. This method is invoked by the CacheService when the CacheService no longer requires the specified Map object.
        Parameters:
        sName - the cache name
        map - the Map object that is being released
        mapListeners - the map of listeners for the map
      • isBackupPartitioned

        public boolean isBackupPartitioned​(String sName)
        Return true if the backup map should be partitioned.
        Parameters:
        sName - the cache name
        Returns:
        true if the backup map should be partitioned
      • getCacheFactory

        public ExtensibleConfigurableCacheFactory getCacheFactory()
        Obtain the "container" ConfigurableCacheFactory that created this manager and which this manager is bound to.
        Returns:
        the ConfigurableCacheFactory that created this manager
      • getBackingMap

        public Map getBackingMap​(String sName)
        Get the backing Map associated with a given cache.
        Parameters:
        sName - the cache name
        Returns:
        a Map associated with the specified name
      • setBackingMap

        protected void setBackingMap​(String sName,
                                     Map map)
        Associate the specified backing Map with a given name.
        Parameters:
        sName - the cache name
        map - the backing map associated with the specified name
      • findCachingScheme

        protected CachingScheme findCachingScheme​(String sName)
        Return the CachingScheme for a given cache name. If the caching scheme is a near cache then return the back scheme.
        Parameters:
        sName - the cache name
        Returns:
        the CachingScheme or null