Class CacheConfiguration

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class CacheConfiguration
    extends java.lang.Object
    implements java.lang.Cloneable
    A value object used to represent cache configuration.

    Construction Patterns

    The recommended way of creating a Cache in Ehcache 2.0 and above is to create a CacheConfiguration object and pass it to the Cache constructor. See Cache(CacheConfiguration).

    This class supports setter injection and also the fluent builder pattern. e.g. Cache cache = new Cache(new CacheConfiguration("test2", 1000).eternal(true).memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.FIFO));

    Rather than proliferation of new constructors as new versions of Ehcache come out, it intended to add the new configuration to this class.

    Another way to set configuration is declaratively in the ehcache.xml configuration file. e.g.

    
     <cache name="testCache1"
       maxEntriesLocalHeap="10000"
       eternal="false"
       timeToIdleSeconds="3600"
       timeToLiveSeconds="10"
       overflowToDisk="true"
       diskPersistent="true"
       diskExpiryThreadIntervalSeconds="120"
       maxEntriesLocalDisk="10000"
     />
     

    Dynamic Configuration

    CacheConfiguration instances retrieved from Cache instances allow the dynamic modification of certain configuration properties. Currently the dynamic properties are:
    • Time To Idle
    • Time To Live
    • Max Entries in Local Heap
    • Max Entries on Local Disk
    Dynamic changes are however not persistent across cache restarts. On restart the cache configuration will be reloaded from its original source, erasing any changes made previously at runtime.

    Users should also take care of synchronizing threads externally, if a CacheConfiguration instance is going to be mutated by multiple threads concurrently. While CacheConfiguration instances will make changes properly visible to all threads, logic within individual methods (e.g. validation) isn't trying to provide any "thread safeness".

    Version:
    $Id$
    Author:
    Greg Luck, Chris Dennis
    • Field Detail

      • DEFAULT_CLEAR_ON_FLUSH

        public static final boolean DEFAULT_CLEAR_ON_FLUSH
        Default value for clearOnFlush
        See Also:
        Constant Field Values
      • DEFAULT_EXPIRY_THREAD_INTERVAL_SECONDS

        public static final long DEFAULT_EXPIRY_THREAD_INTERVAL_SECONDS
        The default interval between runs of the expiry thread.
        See Also:
        Constant Field Values
      • DEFAULT_SPOOL_BUFFER_SIZE

        public static final int DEFAULT_SPOOL_BUFFER_SIZE
        Set a buffer size for the spool of approx 30MB.
        See Also:
        Constant Field Values
      • DEFAULT_DISK_ACCESS_STRIPES

        public static final int DEFAULT_DISK_ACCESS_STRIPES
        Default number of diskAccessStripes.
        See Also:
        Constant Field Values
      • DEFAULT_LOGGING

        public static final boolean DEFAULT_LOGGING
        Logging is off by default.
        See Also:
        Constant Field Values
      • DEFAULT_MEMORY_STORE_EVICTION_POLICY

        public static final MemoryStoreEvictionPolicy DEFAULT_MEMORY_STORE_EVICTION_POLICY
        The default memory store eviction policy is LRU.
      • DEFAULT_CACHE_WRITER_CONFIGURATION

        public static final CacheWriterConfiguration DEFAULT_CACHE_WRITER_CONFIGURATION
        The default cacheWriterConfiguration
      • DEFAULT_COPY_ON_READ

        public static final boolean DEFAULT_COPY_ON_READ
        Default value for copyOnRead
        See Also:
        Constant Field Values
      • DEFAULT_COPY_ON_WRITE

        public static final boolean DEFAULT_COPY_ON_WRITE
        Default value for copyOnRead
        See Also:
        Constant Field Values
      • DEFAULT_TTL

        public static final long DEFAULT_TTL
        Default value for ttl
        See Also:
        Constant Field Values
      • DEFAULT_TTI

        public static final long DEFAULT_TTI
        Default value for tti
        See Also:
        Constant Field Values
      • DEFAULT_MAX_ELEMENTS_ON_DISK

        public static final int DEFAULT_MAX_ELEMENTS_ON_DISK
        Default value for maxElementsOnDisk
        See Also:
        Constant Field Values
      • DEFAULT_MAX_ENTRIES_IN_CACHE

        public static final long DEFAULT_MAX_ENTRIES_IN_CACHE
        Default value for maxEntriesInCache
        See Also:
        Constant Field Values
      • DEFAULT_STATISTICS

        public static final boolean DEFAULT_STATISTICS
        Default value for statistics
        See Also:
        Constant Field Values
      • DEFAULT_COPY_STRATEGY_CONFIGURATION

        public static final CopyStrategyConfiguration DEFAULT_COPY_STRATEGY_CONFIGURATION
        Default copyStrategyConfiguration
      • DEFAULT_MAX_BYTES_OFF_HEAP

        public static final long DEFAULT_MAX_BYTES_OFF_HEAP
        Default maxBytesOffHeap value
        See Also:
        Constant Field Values
      • DEFAULT_MAX_BYTES_ON_DISK

        public static final long DEFAULT_MAX_BYTES_ON_DISK
        Default maxBytesOnDisk value
        See Also:
        Constant Field Values
      • DEFAULT_ETERNAL_VALUE

        public static final boolean DEFAULT_ETERNAL_VALUE
        Default eternal value
        See Also:
        Constant Field Values
      • name

        protected volatile java.lang.String name
        the name of the cache.
      • cacheLoaderTimeoutMillis

        protected volatile long cacheLoaderTimeoutMillis
        Timeout in milliseconds for CacheLoader related calls
      • maxEntriesLocalHeap

        protected volatile java.lang.Integer maxEntriesLocalHeap
        the maximum objects to be held in the MemoryStore.

        0 translates to no-limit.

      • maxElementsOnDisk

        protected volatile int maxElementsOnDisk
        the maximum objects to be held in the DiskStore.

        0 translates to no-limit.

      • maxEntriesInCache

        protected volatile long maxEntriesInCache
        the maximum entries to be held in the cache
      • memoryStoreEvictionPolicy

        protected volatile MemoryStoreEvictionPolicy memoryStoreEvictionPolicy
        The policy used to evict elements from the MemoryStore. This can be one of:
        1. LRU - least recently used
        2. LFU - Less frequently used
        3. FIFO - first in first out, the oldest element by creation time
        The default value is LRU
        Since:
        1.2
      • clearOnFlush

        protected volatile boolean clearOnFlush
        Sets whether the MemoryStore should be cleared when flush() is called on the cache - true by default.
      • eternal

        protected volatile boolean eternal
        Sets whether elements are eternal. If eternal, timeouts are ignored and the element is never expired.
      • timeToIdleSeconds

        protected volatile long timeToIdleSeconds
        the time to idle for an element before it expires. Is only used if the element is not eternal.A value of 0 means do not check for idling.
      • timeToLiveSeconds

        protected volatile long timeToLiveSeconds
        Sets the time to idle for an element before it expires. Is only used if the element is not eternal. This attribute is optional in the configuration. A value of 0 means do not check time to live.
      • overflowToDisk

        @Deprecated
        protected volatile java.lang.Boolean overflowToDisk
        Deprecated.
        The overflowToDisk attribute has been replaced with PersistenceConfiguration.Strategy.LOCALTEMPSWAP.
        whether elements can overflow to disk when the in-memory cache has reached the set limit.
      • diskPersistent

        @Deprecated
        protected volatile java.lang.Boolean diskPersistent
        Deprecated.
        The diskPersistent attribute has been replaced with persistence(PersistenceConfiguration).
        For caches that overflow to disk, whether the disk cache persists between CacheManager instances.
      • diskSpoolBufferSizeMB

        protected volatile int diskSpoolBufferSizeMB
        The size of the disk spool used to buffer writes
      • diskAccessStripes

        protected volatile int diskAccessStripes
        The number of concurrent disk access stripes.
      • diskExpiryThreadIntervalSeconds

        protected volatile long diskExpiryThreadIntervalSeconds
        The interval in seconds between runs of the disk expiry thread.

        2 minutes is the default. This is not the same thing as time to live or time to idle. When the thread runs it checks these things. So this value is how often we check for expiry.

      • logging

        protected volatile boolean logging
        Indicates whether logging is enabled or not. False by default. Only used when cache is clustered with Terracotta.
      • overflowToOffHeap

        protected volatile java.lang.Boolean overflowToOffHeap
        whether elements can overflow to off heap memory when the in-memory cache has reached the set limit.
      • pinningConfiguration

        protected volatile PinningConfiguration pinningConfiguration
        The PinningConfiguration.
    • Constructor Detail

      • CacheConfiguration

        public CacheConfiguration()
        Default constructor.

        Note that an empty Cache is not valid and must have extra configuration added which can be done through the fluent methods in this class. Call validateConfiguration() to check your configuration.

        See Also:
        validateCompleteConfiguration()
      • CacheConfiguration

        public CacheConfiguration​(java.lang.String name,
                                  int maxEntriesLocalHeap)
        Create a new cache configuration.

        Extra configuration can added after construction via the fluent methods in this class. Call validateConfiguration() to check your configuration.

        Parameters:
        name - the name of the cache. Note that "default" is a reserved name for the defaultCache.
        maxEntriesLocalHeap - the maximum number of elements in memory, before they are evicted (0 == no limit)
        See Also:
        validateCompleteConfiguration()
    • Method Detail

      • clone

        public CacheConfiguration clone()
        Clones this object, following the usual contract.
        Overrides:
        clone in class java.lang.Object
        Returns:
        a copy, which independent other than configurations than cannot change.
      • setName

        public final void setName​(java.lang.String name)
        Sets the name of the cache.

        Cache names have constraints on the characters they can use:

        • the '/' character is illegal,
        • the '#' character does not work with RMI replication,
        • caches that are registered as MBeans must obey the ObjectName rules for unquoted value. This means the following characters are illegal: ',', '=', ':', '"', '*' and '?'.
        Note that caches inside a clustered cache manager are by default registered as MBean.
        Parameters:
        name - the cache name. This must be unique.
      • name

        public final CacheConfiguration name​(java.lang.String name)
        Builder to set the name of the cache.

        Cache names have constraints on the characters they can use:

        • the '/' character is illegal,
        • the '#' character does not work with RMI replication,
        • caches that are registered as MBeans must obey the ObjectName rules for unquoted value. This means the following characters are illegal: ',', '=', ':', '"', '*' and '?'.
        Note that caches inside a clustered cache manager are by default registered as MBean.
        Parameters:
        name - the cache name. This must be unique.
        Returns:
        this configuration instance
        See Also:
        setName(String)
      • setLogging

        public final void setLogging​(boolean enable)
        Enables or disables logging for the cache

        This property can be modified dynamically while the cache is operating. Only used when cache is clustered with Terracotta

        Parameters:
        enable - If true, enables logging otherwise disables logging
      • setOverflowToOffHeap

        public final void setOverflowToOffHeap​(boolean overflowToOffHeap)
        Enables or disables offheap store for the cache.
        Parameters:
        overflowToOffHeap - If true, enables offheap store otherwise disables it.
      • overflowToOffHeap

        public CacheConfiguration overflowToOffHeap​(boolean overflowToOffHeap)
        Builder to enable or disable offheap store for the cache.
        Parameters:
        overflowToOffHeap - If true, enables offheap store otherwise disables it.
        Returns:
        this configuration instance
        See Also:
        setOverflowToOffHeap(boolean)
      • addSizeOfPolicy

        public void addSizeOfPolicy​(SizeOfPolicyConfiguration sizeOfPolicyConfiguration)
        Sets the SizeOfPolicyConfiguration for this cache.
        Parameters:
        sizeOfPolicyConfiguration - the SizeOfPolicy Configuration
      • addPersistence

        public void addPersistence​(PersistenceConfiguration persistenceConfiguration)
        Sets the PersistenceConfiguration for this cache.
        Parameters:
        persistenceConfiguration - the Persistence Configuration
      • setMaxMemoryOffHeap

        @Deprecated
        public final void setMaxMemoryOffHeap​(java.lang.String maxMemoryOffHeap)
        Sets the max off heap memory size allocated for this cache.
        Parameters:
        maxMemoryOffHeap - the max off heap memory size allocated for this cache.
      • logging

        public final CacheConfiguration logging​(boolean enable)
        Builder to enable or disable logging for the cache

        This property can be modified dynamically while the cache is operating. Only used when cache is clustered with Terracotta

        Parameters:
        enable - If true, enables logging otherwise disables logging
        Returns:
        this configuration instance
        See Also:
        setLogging(boolean)
      • setMaxElementsInMemory

        @Deprecated
        public final void setMaxElementsInMemory​(int maxElementsInMemory)
        Sets the maximum objects to be held in memory (0 = no limit).

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxElementsInMemory - The maximum number of elements in memory, before they are evicted (0 == no limit)
      • setMaxEntriesLocalHeap

        public final void setMaxEntriesLocalHeap​(long maxEntriesLocalHeap)
        Sets the maximum objects to be held in local heap memory (0 = no limit).

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxEntriesLocalHeap - The maximum number of elements in memory, before they are evicted (0 == no limit)
      • maxElementsInMemory

        @Deprecated
        public final CacheConfiguration maxElementsInMemory​(int maxElementsInMemory)
        Deprecated.
        Builder that sets the maximum objects to be held in memory (0 = no limit).

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxElementsInMemory - The maximum number of elements in memory, before they are evicted (0 == no limit)
        Returns:
        this configuration instance
      • maxEntriesLocalHeap

        public final CacheConfiguration maxEntriesLocalHeap​(int maxElementsInMemory)
        Builder that sets the maximum objects to be held in memory (0 = no limit).

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxElementsInMemory - The maximum number of elements in memory, before they are evicted (0 == no limit)
        Returns:
        this configuration instance
      • setCacheLoaderTimeoutMillis

        public final void setCacheLoaderTimeoutMillis​(long cacheLoaderTimeoutMillis)
        Sets the timeout for CacheLoader execution (0 = no timeout).
        Parameters:
        cacheLoaderTimeoutMillis - the timeout in milliseconds.
      • timeoutMillis

        public CacheConfiguration timeoutMillis​(long timeoutMillis)
        Builder that sets the timeout for CacheLoader execution (0 = no timeout).
        Parameters:
        timeoutMillis - the timeout in milliseconds.
        Returns:
        this configuration instance
      • setMemoryStoreEvictionPolicy

        public final void setMemoryStoreEvictionPolicy​(java.lang.String memoryStoreEvictionPolicy)
        Sets the eviction policy. An invalid argument will set it to LRU.
        Parameters:
        memoryStoreEvictionPolicy - a String representation of the policy. One of "LRU", "LFU" or "FIFO".
      • memoryStoreEvictionPolicy

        public final CacheConfiguration memoryStoreEvictionPolicy​(java.lang.String memoryStoreEvictionPolicy)
        Builder that sets the eviction policy. An invalid argument will set it to null.
        Parameters:
        memoryStoreEvictionPolicy - a String representation of the policy. One of "LRU", "LFU" or "FIFO".
        Returns:
        this configuration instance
        See Also:
        setMemoryStoreEvictionPolicy(String)
      • setMemoryStoreEvictionPolicyFromObject

        public final void setMemoryStoreEvictionPolicyFromObject​(MemoryStoreEvictionPolicy memoryStoreEvictionPolicy)
        Sets the eviction policy. This method has a strange name to workaround a problem with XML parsing.
      • setClearOnFlush

        public final void setClearOnFlush​(boolean clearOnFlush)
        Sets whether the MemoryStore should be cleared when flush() is called on the cache - true by default.
        Parameters:
        clearOnFlush - true to clear on flush
      • clearOnFlush

        public final CacheConfiguration clearOnFlush​(boolean clearOnFlush)
        Builder which sets whether the MemoryStore should be cleared when flush() is called on the cache - true by default.
        Parameters:
        clearOnFlush - true to clear on flush
        Returns:
        this configuration instance
        See Also:
        setClearOnFlush(boolean)
      • setEternal

        public final void setEternal​(boolean eternal)
        Sets whether elements are eternal. If eternal, timeouts are ignored and the element is never expired. False by default.
        Parameters:
        eternal - true for eternal
      • eternal

        public final CacheConfiguration eternal​(boolean eternal)
        Builder which sets whether elements are eternal. If eternal, timeouts are ignored and the element is never expired. False by default.
        Parameters:
        eternal - true for eternal
        Returns:
        this configuration instance
        See Also:
        setEternal(boolean)
      • setTimeToIdleSeconds

        public final void setTimeToIdleSeconds​(long timeToIdleSeconds)
        Sets the time to idle for an element before it expires. Is only used if the element is not eternal. This can be overidden in Element

        This property can be modified dynamically while the cache is operating.

        Parameters:
        timeToIdleSeconds - the default amount of time to live for an element from its last accessed or modified date
      • timeToIdleSeconds

        public final CacheConfiguration timeToIdleSeconds​(long timeToIdleSeconds)
        Builder which sets the time to idle for an element before it expires. Is only used if the element is not eternal. This default can be overridden in Element

        This property can be modified dynamically while the cache is operating.

        Parameters:
        timeToIdleSeconds - the default amount of time to live for an element from its last accessed or modified date
        Returns:
        this configuration instance
        See Also:
        setTimeToIdleSeconds(long)
      • setTimeToLiveSeconds

        public final void setTimeToLiveSeconds​(long timeToLiveSeconds)
        Sets the time to idle for an element before it expires. Is only used if the element is not eternal. This default can be overridden in Element

        This property can be modified dynamically while the cache is operating.

        Parameters:
        timeToLiveSeconds - the default amount of time to live for an element from its creation date
      • timeToLiveSeconds

        public final CacheConfiguration timeToLiveSeconds​(long timeToLiveSeconds)
        Builder which sets the time to idle for an element before it expires. Is only used if the element is not eternal. This default can be overridden in Element

        This property can be modified dynamically while the cache is operating.

        Parameters:
        timeToLiveSeconds - the default amount of time to live for an element from its creation date
        Returns:
        this configuration instance
        See Also:
        setTimeToLiveSeconds(long)
      • setOverflowToDisk

        @Deprecated
        public final void setOverflowToDisk​(boolean overflowToDisk)
        Deprecated.
        The overflowToDisk attribute has been replaced with PersistenceConfiguration.Strategy.LOCALTEMPSWAP.
        Sets whether elements can overflow to disk when the in-memory cache has reached the set limit.
        Parameters:
        overflowToDisk - whether to use the disk store
      • overflowToDisk

        @Deprecated
        public final CacheConfiguration overflowToDisk​(boolean overflowToDisk)
        Deprecated.
        The overflowToDisk attribute has been replaced with PersistenceConfiguration.Strategy.LOCALTEMPSWAP.
        Builder which sets whether elements can overflow to disk when the in-memory cache has reached the set limit.
        Parameters:
        overflowToDisk - whether to use the disk store
        Returns:
        this configuration instance
        See Also:
        setOverflowToDisk(boolean)
      • setDiskPersistent

        @Deprecated
        public final void setDiskPersistent​(boolean diskPersistent)
        Deprecated.
        The diskPersistent attribute has been replaced with persistence(PersistenceConfiguration).
        Sets whether the disk store persists between CacheManager instances. Note that this operates independently of overflowToDisk.
        Parameters:
        diskPersistent - whether to persist the cache to disk between JVM restarts
      • diskPersistent

        @Deprecated
        public final CacheConfiguration diskPersistent​(boolean diskPersistent)
        Deprecated.
        The diskPersistent attribute has been replaced with persistence(PersistenceConfiguration).
        Builder which sets whether the disk store persists between CacheManager instances. Note that this operates independently of overflowToDisk.
        Parameters:
        diskPersistent - whether to persist the cache to disk between JVM restarts.
        Returns:
        this configuration instance
        See Also:
        setDiskPersistent(boolean)
      • setDiskSpoolBufferSizeMB

        public void setDiskSpoolBufferSizeMB​(int diskSpoolBufferSizeMB)
        Sets the disk spool size, which is used to buffer writes to the DiskStore. If not set it defaults to DEFAULT_SPOOL_BUFFER_SIZE
        Parameters:
        diskSpoolBufferSizeMB - a positive number
      • diskSpoolBufferSizeMB

        public final CacheConfiguration diskSpoolBufferSizeMB​(int diskSpoolBufferSizeMB)
        Builder which sets the disk spool size, which is used to buffer writes to the DiskStore. If not set it defaults to DEFAULT_SPOOL_BUFFER_SIZE
        Parameters:
        diskSpoolBufferSizeMB - a positive number
        Returns:
        this configuration instance
        See Also:
        setDiskSpoolBufferSizeMB(int)
      • setDiskAccessStripes

        public void setDiskAccessStripes​(int stripes)
        Sets the number of disk stripes. RandomAccessFiles used to access the data file. By default there is one stripe.
        Parameters:
        stripes - number of stripes (rounded up to a power-of-2)
      • diskAccessStripes

        public final CacheConfiguration diskAccessStripes​(int stripes)
        Builder which sets the number of disk stripes. RandomAccessFiles used to access the data file. By default there is one stripe.
        Returns:
        this configuration instance
        See Also:
        setDiskAccessStripes(int)
      • setMaxElementsOnDisk

        public void setMaxElementsOnDisk​(int maxElementsOnDisk)
        Deprecated.
        use setMaxEntriesLocalDisk(long) for unclustered caches and setMaxEntriesInCache(long) for clustered caches.
        Sets the maximum number elements on Disk. 0 means unlimited.

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxElementsOnDisk - the maximum number of Elements to allow on the disk. 0 means unlimited.
      • setMaxEntriesInCache

        public void setMaxEntriesInCache​(long maxEntriesInCache)
        Sets the maximum number of entries in the cache. Only applies to terracotta clustered caches.

        The values for maxEntriesInCache must be equal or superior to 0 and are interpreted as follows:

        • maxEntriesInCache == 0 means no capacity based eviction, but resource based eviction can happen.
        • maxEntriesInCache > 0 means both capacity based and resource based eviction can happen

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxEntriesInCache - maximum number of entries in cache
      • setMaxEntriesLocalDisk

        public void setMaxEntriesLocalDisk​(long maxEntriesLocalDisk)
        Sets the maximum number elements on Disk. 0 means unlimited.

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxEntriesLocalDisk - the maximum number of Elements to allow on the disk. 0 means unlimited.
      • maxElementsOnDisk

        public final CacheConfiguration maxElementsOnDisk​(int maxElementsOnDisk)
        Deprecated.
        use maxEntriesLocalDisk(int) for unclustered caches and maxEntriesInCache(long) for clustered caches.
        Builder which sets the maximum number elements on Disk. 0 means unlimited.

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxElementsOnDisk - the maximum number of Elements to allow on the disk. 0 means unlimited.
        Returns:
        this configuration instance
        See Also:
        setMaxElementsOnDisk(int)
      • maxEntriesInCache

        public final CacheConfiguration maxEntriesInCache​(long maxEntriesInCache)
        Builder which sets the maximum number entries in cache.

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxEntriesInCache - the maximum number of entries to allow in the cache.
        Returns:
        this configuration instance
        See Also:
        setMaxEntriesInCache(long)
      • maxEntriesLocalDisk

        public final CacheConfiguration maxEntriesLocalDisk​(int maxElementsOnDisk)
        Builder which sets the maximum number elements on Disk. 0 means unlimited.

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxElementsOnDisk - the maximum number of Elements to allow on the disk. 0 means unlimited.
        Returns:
        this configuration instance
        See Also:
        setMaxElementsOnDisk(int)
      • setDiskExpiryThreadIntervalSeconds

        public final void setDiskExpiryThreadIntervalSeconds​(long diskExpiryThreadIntervalSeconds)
        Sets the interval in seconds between runs of the disk expiry thread.

        2 minutes is the default. This is not the same thing as time to live or time to idle. When the thread runs it checks these things. So this value is how often we check for expiry.

      • diskExpiryThreadIntervalSeconds

        public final CacheConfiguration diskExpiryThreadIntervalSeconds​(long diskExpiryThreadIntervalSeconds)
        Builder which sets the interval in seconds between runs of the disk expiry thread.

        2 minutes is the default. This is not the same thing as time to live or time to idle. When the thread runs it checks these things. So this value is how often we check for expiry.

        Returns:
        this configuration instance
        See Also:
        setDiskExpiryThreadIntervalSeconds(long)
      • freezeConfiguration

        public void freezeConfiguration()
        Freeze this configuration. Any subsequent changes will throw a CacheException
      • isFrozen

        public boolean isFrozen()
        Returns:
        true is this configuration is frozen - it cannot be changed dynamically.
      • getCopyStrategy

        public ReadWriteCopyStrategy<Element> getCopyStrategy()
        Getter to the configured ReadWriteCopyStrategy. This will always return the same unique instance per cache
        Returns:
        the ReadWriteCopyStrategy for instance for this cache
      • copyOnRead

        public CacheConfiguration copyOnRead​(boolean copyOnRead)
        Whether the Cache should copy elements it returns
        Parameters:
        copyOnRead - true, if copyOnRead
      • isCopyOnRead

        public boolean isCopyOnRead()
        Whether the Cache should copy elements it returns
        Returns:
        true, is copyOnRead
      • setCopyOnRead

        public void setCopyOnRead​(boolean copyOnRead)
        Whether the Cache should copy elements it returns
        Parameters:
        copyOnRead - true, if copyOnRead
      • copyOnWrite

        public CacheConfiguration copyOnWrite​(boolean copyOnWrite)
        Whether the Cache should copy elements it gets
        Parameters:
        copyOnWrite - true, if copyOnWrite
      • isCopyOnWrite

        public boolean isCopyOnWrite()
        Whether the Cache should copy elements it gets
        Returns:
        true, if copyOnWrite
      • setCopyOnWrite

        public void setCopyOnWrite​(boolean copyOnWrite)
        Whether the Cache should copy elements it gets
        Parameters:
        copyOnWrite - true, if copyOnWrite
      • addCopyStrategy

        public void addCopyStrategy​(CopyStrategyConfiguration copyStrategyConfiguration)
        Sets the CopyStrategyConfiguration for this cache
        Parameters:
        copyStrategyConfiguration - the CopyStrategy Configuration
      • addElementValueComparator

        public void addElementValueComparator​(ElementValueComparatorConfiguration elementValueComparatorConfiguration)
        Sets the ElementValueComparatorConfiguration for this cache The default configuration will setup a DefaultElementValueComparator
        Parameters:
        elementValueComparatorConfiguration - the ElementComparator Configuration
      • addSearchable

        public final void addSearchable​(Searchable searchable)
        Add configuration to make this cache searchable
        Parameters:
        searchable - search config to add
      • getMaxBytesLocalHeap

        @Deprecated
        public long getMaxBytesLocalHeap()
        Deprecated.
        The maximum amount of bytes the cache should occupy on heap
        Returns:
        value in bytes, 0 if none set
      • setMaxBytesLocalHeap

        @Deprecated
        public void setMaxBytesLocalHeap​(java.lang.String maxBytesHeap)
        Deprecated.
        Setter for maxBytesLocalHeap as a String. Value can have a one char unit suffix or be a percentage (ending in %)

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxBytesHeap - String representation of the size, can be relative (in %)
      • setMaxBytesLocalHeap

        @Deprecated
        public void setMaxBytesLocalHeap​(java.lang.Long maxBytesHeap)
        Deprecated.
        Setter for maxBytesLocalHeap in bytes

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxBytesHeap - max bytes in heap in bytes
      • maxBytesLocalHeap

        public CacheConfiguration maxBytesLocalHeap​(long amount,
                                                    MemoryUnit memoryUnit)
        Sets the maxOnHeap size
        Parameters:
        amount - the amount of unit
        memoryUnit - the actual unit
        Returns:
        this
      • getMaxBytesLocalOffHeap

        public long getMaxBytesLocalOffHeap()
        The maximum amount of bytes the cache should occupy off heap
        Returns:
        value in bytes, 0 if none set
      • getMaxBytesLocalOffHeapAsString

        public java.lang.String getMaxBytesLocalOffHeapAsString()
        The string form of the maximum amount of bytes the cache should occupy off heap
        Returns:
        value as string in bytes
      • setMaxBytesLocalOffHeap

        public void setMaxBytesLocalOffHeap​(java.lang.String maxBytesOffHeap)
        Setter for maximum bytes off heap as a String. Value can have a one char unit suffix or be a percentage (ending in %)

        Changes to this property once the cache is operating will have no effect.

        Parameters:
        maxBytesOffHeap - String representation of the size, can be relative (in %)
      • getMaxBytesLocalOffHeapPercentage

        public java.lang.Integer getMaxBytesLocalOffHeapPercentage()
        Getter for maximum bytes off heap expressed as a percentage
        Returns:
        percentage (between 0 and 100)
      • getMaxBytesLocalHeapPercentage

        @Deprecated
        public java.lang.Integer getMaxBytesLocalHeapPercentage()
        Deprecated.
        Getter for maximum bytes on heap expressed as a percentage
        Returns:
        percentage (between 0 and 100)
      • getMaxBytesLocalHeapAsString

        @Deprecated
        public java.lang.String getMaxBytesLocalHeapAsString()
        Deprecated.
        The string form of the maximum amount of bytes the cache should occupy on heap
        Returns:
        value as string in bytes
      • getMaxBytesLocalDiskPercentage

        public java.lang.Integer getMaxBytesLocalDiskPercentage()
        Getter for maximum bytes on disk expressed as a percentage
        Returns:
        percentage (between 0 and 100)
      • setMaxBytesLocalOffHeap

        public void setMaxBytesLocalOffHeap​(java.lang.Long maxBytesOffHeap)
        Sets the maximum amount of bytes the cache being configured will use on the OffHeap tier

        Changes to this property once the cache is operating will have no effect.

        Parameters:
        maxBytesOffHeap - max bytes on disk in bytes
      • maxBytesLocalOffHeap

        public CacheConfiguration maxBytesLocalOffHeap​(long amount,
                                                       MemoryUnit memoryUnit)
        Sets the maxOffHeap tier size

        Changes to this property once the cache is operating will have no effect.

        Parameters:
        amount - the amount of unit
        memoryUnit - the actual unit
        Returns:
        this
      • getMaxBytesLocalDisk

        public long getMaxBytesLocalDisk()
        The maximum amount of bytes the cache should occupy on disk
        Returns:
        value in bytes, 0 if none set
      • getMaxBytesLocalDiskAsString

        public java.lang.String getMaxBytesLocalDiskAsString()
        The string form of the maximum amount of bytes the cache should occupy on disk
        Returns:
        value as string in bytes
      • setMaxBytesLocalDisk

        public void setMaxBytesLocalDisk​(java.lang.String maxBytesDisk)
        Setter for maxBytesOnDisk as a String. Value can have a one char unit suffix or be a percentage (ending in %)

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxBytesDisk - String representation of the size, can be relative (in %)
      • setMaxBytesLocalDisk

        public void setMaxBytesLocalDisk​(java.lang.Long maxBytesDisk)
        Sets the maximum amount of bytes the cache being configured will use on the OnDisk tier

        This property can be modified dynamically while the cache is operating.

        Parameters:
        maxBytesDisk - max bytes on disk in bytes
      • maxBytesLocalDisk

        public CacheConfiguration maxBytesLocalDisk​(long amount,
                                                    MemoryUnit memoryUnit)
        Sets the maxOnDisk size

        This property can be modified dynamically while the cache is operating.

        Parameters:
        amount - the amount of unit
        memoryUnit - the actual unit
        Returns:
        this
      • setDynamicAttributesExtractor

        public void setDynamicAttributesExtractor​(DynamicAttributesExtractor extractor)
        Sets dynamic search attributes extractor
        Parameters:
        extractor - extractor to use
      • getCopyStrategyConfiguration

        public CopyStrategyConfiguration getCopyStrategyConfiguration()
        Returns the copyStrategyConfiguration
        Returns:
        the copyStrategyConfiguration
      • getElementValueComparatorConfiguration

        public ElementValueComparatorConfiguration getElementValueComparatorConfiguration()
        Returns the elementComparatorConfiguration
        Returns:
        the elementComparatorConfiguration
      • isMaxBytesLocalHeapPercentageSet

        @Deprecated
        public boolean isMaxBytesLocalHeapPercentageSet()
        Deprecated.
        Checks whether the user explicitly set the maxBytesOnHeapPercentage
        Returns:
        true if set by user, false otherwise
        See Also:
        setMaxBytesLocalHeap(String)
      • isMaxBytesLocalOffHeapPercentageSet

        public boolean isMaxBytesLocalOffHeapPercentageSet()
        Checks whether the user explicitly set the maxBytesOffHeapPercentage
        Returns:
        true if set by user, false otherwise
        See Also:
        setMaxBytesLocalOffHeap(String)
      • isMaxBytesLocalDiskPercentageSet

        public boolean isMaxBytesLocalDiskPercentageSet()
        Checks whether the user explicitly set the maxBytesOnDiskPercentage
        Returns:
        true if set by user, false otherwise
        See Also:
        setMaxBytesLocalDisk(String)
      • setupFor

        public void setupFor​(CacheManager cacheManager)
        Sets up the CacheConfiguration for runtime consumption, also registers this cache configuration with the cache manager's configuration
        Parameters:
        cacheManager - The CacheManager as part of which the cache is being setup
      • setupFor

        public void setupFor​(CacheManager cacheManager,
                             boolean register,
                             java.lang.String parentCache)
        Sets up the CacheConfiguration for runtime consumption
        Parameters:
        cacheManager - The CacheManager as part of which the cache is being setup
        register - true to register this cache configuration with the cache manager.
      • validate

        public java.util.Collection<ConfigError> validate​(Configuration configuration)
        Validates the configuration
        Parameters:
        configuration - the CacheManager configuration this is going to be used with
        Returns:
        the errors in the config
      • isCountBasedTuned

        public boolean isCountBasedTuned()
        Whether this cache is Count based
        Returns:
        true if maxEntries set, false otherwise
      • isOverflowToOffHeapSet

        public boolean isOverflowToOffHeapSet()
        Checks whether the overflowing to off heap behavior was explicitly set
        Returns:
        true if explicitly set, false otherwise
      • addTerracotta

        public final void addTerracotta​(TerracottaConfiguration terracottaConfiguration)
        Allows BeanHandler to add the TerracottaConfiguration to the configuration.
      • addPinning

        public final void addPinning​(PinningConfiguration pinningConfiguration)
        Allows BeanHandler to add the PinningConfiguration to the configuration.
      • addCacheWriter

        public final void addCacheWriter​(CacheWriterConfiguration cacheWriterConfiguration)
        Allows BeanHandler to add the CacheWriterConfiguration to the configuration.
      • setTransactionalMode

        public final void setTransactionalMode​(java.lang.String transactionalMode)
        Sets the transactionalMode
        Parameters:
        transactionalMode - one of OFF, LOCAL, XA, XA_STRICT
      • transactionalMode

        public final CacheConfiguration transactionalMode​(java.lang.String transactionalMode)
        Builder which sets the transactionalMode
        Parameters:
        transactionalMode - one of OFF, LOCAL, XA, XA_STRICT
        Returns:
        this configuration instance
        See Also:
        setTransactionalMode(String)
      • setStatistics

        @Deprecated
        public final void setStatistics​(boolean enabled)
        Deprecated.
        Sets whether the cache's statistics are enabled. at startup
      • statistics

        @Deprecated
        public final CacheConfiguration statistics​(boolean statistics)
        Deprecated.
        Builder which sets whether the cache's statistics are enabled.
        Returns:
        this configuration instance
        See Also:
        setStatistics(boolean)
      • getStatistics

        public final boolean getStatistics()
        Gets whether the cache's statistics will be enabled at startup
      • validateCompleteConfiguration

        public void validateCompleteConfiguration()
        Used to validate what should be a complete Cache Configuration.
      • validateConfiguration

        public void validateConfiguration()
        Used to validate a Cache Configuration.
      • getName

        public java.lang.String getName()
        Accessor
      • getMaxElementsInMemory

        @Deprecated
        public int getMaxElementsInMemory()
        Deprecated.
        Accessor
      • getCacheLoaderTimeoutMillis

        public long getCacheLoaderTimeoutMillis()
        Accessor
      • getMaxEntriesInCache

        public long getMaxEntriesInCache()
        Accessor
      • getMaxEntriesLocalDisk

        public long getMaxEntriesLocalDisk()
        Configured maximum number of entries for the local disk store.
      • getMaxEntriesLocalHeap

        public long getMaxEntriesLocalHeap()
        Configured maximum number of entries for the local memory heap.
      • isClearOnFlush

        public boolean isClearOnFlush()
        Accessor
      • isEternal

        public boolean isEternal()
        Accessor
      • getTimeToIdleSeconds

        public long getTimeToIdleSeconds()
        Accessor
      • getTimeToLiveSeconds

        public long getTimeToLiveSeconds()
        Accessor
      • isSearchable

        public boolean isSearchable()
        Accessor
      • getDiskSpoolBufferSizeMB

        public int getDiskSpoolBufferSizeMB()
        Accessor
      • getDiskExpiryThreadIntervalSeconds

        public long getDiskExpiryThreadIntervalSeconds()
        Accessor
      • getDiskAccessStripes

        public int getDiskAccessStripes()
        Accessor
      • getLogging

        public boolean getLogging()
        Only used when cache is clustered with Terracotta
        Returns:
        true if logging is enabled otherwise false
      • isOverflowToOffHeap

        public boolean isOverflowToOffHeap()
        Accessor
        Returns:
        true if offheap store is enabled, otherwise false.
      • getSizeOfPolicyConfiguration

        public SizeOfPolicyConfiguration getSizeOfPolicyConfiguration()
        Accessor
        Returns:
        the SizeOfPolicy Configuration for this cache.
      • getPersistenceConfiguration

        public PersistenceConfiguration getPersistenceConfiguration()
        Accessor
        Returns:
        the persistence configuration for this cache.
      • getMaxMemoryOffHeap

        @Deprecated
        public java.lang.String getMaxMemoryOffHeap()
        Accessor
        Returns:
        the max memory of the offheap store for this cache.
      • getMaxMemoryOffHeapInBytes

        @Deprecated
        public long getMaxMemoryOffHeapInBytes()
        Accessor
        Returns:
        the max memory of the offheap store for this cache, in bytes.
      • getCacheEventListenerConfigurations

        public java.util.List getCacheEventListenerConfigurations()
        Accessor
      • getCacheExtensionConfigurations

        public java.util.List getCacheExtensionConfigurations()
        Accessor
        Returns:
        the configuration
      • getCacheLoaderConfigurations

        public java.util.List getCacheLoaderConfigurations()
        Accessor
        Returns:
        the configuration
      • getTerracottaConfiguration

        public TerracottaConfiguration getTerracottaConfiguration()
        Accessor
        Returns:
        the terracotta configuration
      • getPinningConfiguration

        public PinningConfiguration getPinningConfiguration()
        Accessor
        Returns:
        the pinning configuration
      • getCacheWriterConfiguration

        public CacheWriterConfiguration getCacheWriterConfiguration()
        Accessor
        Returns:
        the writer configuration
      • isTerracottaClustered

        public boolean isTerracottaClustered()
        Helper method to compute whether the cache is clustered or not
        Returns:
        True if the <terracotta/> element exists with clustered="true"
      • isXaStrictTransactional

        public boolean isXaStrictTransactional()
        Helper method to compute whether the cache is XA transactional or not
        Returns:
        true if transactionalMode="xa_strict"
      • isLocalTransactional

        public boolean isLocalTransactional()
        Helper method to compute whether the cache is local transactional or not
        Returns:
        true if transactionalMode="local"
      • isXaTransactional

        public boolean isXaTransactional()
        Helper method to compute whether the cache is local_jta transactional or not
        Returns:
        true if transactionalMode="xa"
      • addConfigurationListener

        public boolean addConfigurationListener​(CacheConfigurationListener listener)
        Add a listener to this cache configuration
        Parameters:
        listener - listener instance to add
        Returns:
        true if a listener was added
      • addDynamicSearchListener

        public boolean addDynamicSearchListener​(DynamicSearchListener listener)
        Add a dynamic extractor configuration listener
        Parameters:
        listener -
        Returns:
        true if a listener was added
      • removeConfigurationListener

        public boolean removeConfigurationListener​(CacheConfigurationListener listener)
        Remove the supplied cache configuration listener.
        Parameters:
        listener - listener to remove
        Returns:
        true if a listener was removed
      • internalSetTimeToIdle

        public void internalSetTimeToIdle​(long timeToIdle)
        Intended for internal use only, and subject to change. This is required so that changes in store implementation's config (probably from other nodes) can propagate up to here
      • internalSetTimeToLive

        public void internalSetTimeToLive​(long timeToLive)
        Intended for internal use only, and subject to change.
      • internalSetEternal

        public void internalSetEternal​(boolean eternal)
        Intended for internal use only, and subject to change.
      • internalSetMemCapacity

        public void internalSetMemCapacity​(int capacity)
        Intended for internal use only, and subject to change.
      • internalSetMemCapacityInBytes

        @Deprecated
        public void internalSetMemCapacityInBytes​(long capacity)
        Deprecated.
        Intended for internal use only, and subject to change.
      • internalSetDiskCapacity

        public void internalSetDiskCapacity​(int capacity)
        Intended for internal use only, and subject to change.
      • internalSetMaxEntriesInCache

        public void internalSetMaxEntriesInCache​(int entries)
        Intended for internal use only, and subject to change.
      • internalSetLogging

        public void internalSetLogging​(boolean logging)
        Intended for internal use only, and subject to change.
      • internalSetMaxBytesLocalOffheap

        public void internalSetMaxBytesLocalOffheap​(long maxBytesLocalOffheap)
        Intended for internal use only, and subject to change.
      • internalSetOverflowToOffheap

        public void internalSetOverflowToOffheap​(boolean overflowToOffHeap)
        Intended for internal use only, and subject to change.
      • getSearchAttributes

        public java.util.Map<java.lang.String,​SearchAttribute> getSearchAttributes()
        Get the defined search attributes indexed by attribute name
        Returns:
        search attributes
      • getSearchable

        public Searchable getSearchable()
        Get the search configuration for this cache (if any)
        Returns:
        search config (may be null)
      • getClassLoader

        public java.lang.ClassLoader getClassLoader()
      • setClassLoader

        public void setClassLoader​(java.lang.ClassLoader classLoader)