ehcache

net.sf.ehcache.constructs.nonstop.store
Class ExceptionOnTimeoutStore

java.lang.Object
  extended by net.sf.ehcache.constructs.nonstop.store.ExceptionOnTimeoutStore
All Implemented Interfaces:
NonstopStore, Store, TerracottaStore

public final class ExceptionOnTimeoutStore
extends Object
implements NonstopStore

Implementation of NonstopStore that throws NonStopCacheException for all operations.

Author:
Abhishek Sanoujam

Field Summary
static NonstopTimeoutBehaviorFactory FACTORY
          The NonstopTimeoutBehaviorFactory to create ExceptionOnTimeoutStore stores
 
Fields inherited from interface net.sf.ehcache.store.Store
CLUSTER_COHERENT, NODE_COHERENT
 
Method Summary
 void addStoreListener(StoreListener listener)
          Add a listener to the store.
 boolean bufferFull()
          Some store types, such as the disk stores can fill their write buffers if puts come in too fast.
 boolean containsKey(Object key)
          A check to see if a key is in the Store.
 boolean containsKeyInMemory(Object key)
          A check to see if a key is in the Store and is currently held in memory.
 boolean containsKeyOffHeap(Object key)
          A check to see if a key is in the Store and is currently held off-heap.
 boolean containsKeyOnDisk(Object key)
          A check to see if a key is in the Store and is currently held on disk.
 void dispose()
          Prepares for shutdown.
<V> V
executeClusterOperation(ClusterOperation<V> operation)
          Execute the ClusterOperation within this NonstopStore context.
 Results executeQuery(StoreQuery query)
          Execute the given query on this store
 void expireElements()
          Expire all elements.
 void flush()
          Flush elements to persistent store.
 Element get(Object key)
          Gets an item from the cache.
 Map<Object,Element> getAll(Collection<?> keys)
          Retries the elements associated with a set of keys and update the statistics Keys which are not present in the cache will have null values associated with them in the returned map
 Map<Object,Element> getAllQuiet(Collection<?> keys)
          Retries the elements associated with a set of keys without updating the statistics Keys which are not present in the cache will have null values associated with them in the returned map
 Policy getInMemoryEvictionPolicy()
          .
 int getInMemorySize()
          Returns the current local in-memory store size
 long getInMemorySizeInBytes()
          Gets the size of the in-memory portion of the store, in bytes.
static ExceptionOnTimeoutStore getInstance()
          returns the singleton instance
 Object getInternalContext()
          This should not be used, and will generally return null
 List getKeys()
          Gets an Array of the keys for all elements in the disk store.
 Set getLocalKeys()
          Returns set of keys from the cache which are present in the node locally.
 Object getMBean()
          Optional implementation specific MBean exposed by the store.
 int getOffHeapSize()
          Returns the current local off-heap store size
 long getOffHeapSizeInBytes()
          Gets the size of the off-heap portion of the store, in bytes.
 int getOnDiskSize()
          Returns the current local on-disk store size
 long getOnDiskSizeInBytes()
          Gets the size of the on-disk portion of the store, in bytes.
 Element getQuiet(Object key)
          Gets an Element from the Store, without updating statistics
<T> Attribute<T>
getSearchAttribute(String attributeName)
          Retrieve the given named search attribute
 int getSize()
          Returns the current local store size
 Status getStatus()
          Returns the cache status.
 int getTerracottaClusteredSize()
          Returns the current Terracotta clustered store size
 CacheConfiguration.TransactionalMode getTransactionalMode()
          Get the transactional mode of this store.
 boolean hasAbortedSizeOf()
          Checks if the cache may contain elements for which the SizeOf engine gave up and only partially calculated the size.
 boolean isCacheCoherent()
          Indicates whether this store provides a coherent view of all the elements in a cache.
 boolean isClusterCoherent()
          Returns true if the cache is in coherent mode cluster-wide.
 boolean isNodeCoherent()
          Returns true if the cache is in coherent mode for the current node.
 boolean isPinned(Object key)
          Check if the key is pinned
 boolean put(Element element)
          Puts an item into the store.
 void putAll(Collection<Element> elements)
          Puts a collection of elements into the store.
 Element putIfAbsent(Element element)
          Put an element in the store if no element is currently mapped to the elements key.
 boolean putWithWriter(Element element, CacheWriterManager writerManager)
          Puts an item into the store and the cache writer manager in an atomic operation
 void recalculateSize(Object key)
          Recalculate size of the element mapped to the key
 Element remove(Object key)
          Removes an item from the cache.
 void removeAll()
          Remove all of the elements from the store.
 void removeAll(Collection<?> keys)
          Removes a collection of elements from the cache.
 Element removeElement(Element element, ElementValueComparator comparator)
          Remove the Element mapped to the key for the supplied element if the value of the supplied Element is equal to the value of the cached Element.
 void removeStoreListener(StoreListener listener)
          Remove listener from store.
 Element removeWithWriter(Object key, CacheWriterManager writerManager)
          Removes an item from the store and the cache writer manager in an atomic operation.
 Element replace(Element element)
          Replace the cached element only if an Element is currently cached for this key
 boolean replace(Element old, Element element, ElementValueComparator comparator)
          Replace the cached element only if the value of the current Element is equal to the value of the supplied old Element.
 void setAttributeExtractors(Map<String,AttributeExtractor> extractors)
          Inform this store of the configured attribute extractors.
 void setInMemoryEvictionPolicy(Policy policy)
          Sets the eviction policy strategy.
 void setNodeCoherent(boolean coherent)
          Sets the cache in coherent or incoherent mode for the current node depending on the parameter.
 void setPinned(Object key, boolean pinned)
          Mark the key as pinned or not
 Element unlockedGet(Object key)
          Gets the value associated with the key without acquiring any locks.
 Element unlockedGetQuiet(Object key)
          Same as TerracottaStore.unlockedGet(Object) but does not update statistics
 void unpinAll()
          unpin all pinned keys
 Element unsafeGet(Object key)
          Returns the local value associated with the key.
 Element unsafeGetQuiet(Object key)
          Same as TerracottaStore.unsafeGet(Object) but does not update last usage statistics
 void waitUntilClusterCoherent()
          This method waits until the cache is in coherent mode in all the connected nodes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FACTORY

public static final NonstopTimeoutBehaviorFactory FACTORY
The NonstopTimeoutBehaviorFactory to create ExceptionOnTimeoutStore stores

Method Detail

getInstance

public static ExceptionOnTimeoutStore getInstance()
returns the singleton instance


unpinAll

public void unpinAll()
unpin all pinned keys

Throws NonStopCacheException

Specified by:
unpinAll in interface Store

isPinned

public boolean isPinned(Object key)
Check if the key is pinned

Throws NonStopCacheException

Specified by:
isPinned in interface Store
Parameters:
key - the key to be checked
Returns:
true if the element is pinned

setPinned

public void setPinned(Object key,
                      boolean pinned)
Mark the key as pinned or not

Throws NonStopCacheException

Specified by:
setPinned in interface Store
Parameters:
key - the key to be pinned or not
pinned - true if the key should be pinned, false otherwise

get

public Element get(Object key)
            throws IllegalStateException,
                   CacheException
Gets an item from the cache..

Throws NonStopCacheException

Specified by:
get in interface Store
Throws:
IllegalStateException
CacheException

getQuiet

public Element getQuiet(Object key)
                 throws IllegalStateException,
                        CacheException
Gets an Element from the Store, without updating statistics

Specified by:
getQuiet in interface Store
Returns:
The element
Throws:
IllegalStateException
CacheException

getAllQuiet

public Map<Object,Element> getAllQuiet(Collection<?> keys)
Retries the elements associated with a set of keys without updating the statistics Keys which are not present in the cache will have null values associated with them in the returned map

Throws NonStopCacheException

Specified by:
getAllQuiet in interface Store
Parameters:
keys - a collection of keys to look for
Returns:
a map of keys and their corresponding values

getAll

public Map<Object,Element> getAll(Collection<?> keys)
Retries the elements associated with a set of keys and update the statistics Keys which are not present in the cache will have null values associated with them in the returned map

Throws NonStopCacheException

Specified by:
getAll in interface Store
Parameters:
keys - a collection of keys to look for
Returns:
a map of keys and their corresponding values

getKeys

public List getKeys()
             throws IllegalStateException,
                    CacheException
Gets an Array of the keys for all elements in the disk store..

Throws NonStopCacheException

Specified by:
getKeys in interface Store
Returns:
An List of Serializable keys
Throws:
IllegalStateException
CacheException

put

public boolean put(Element element)
            throws IllegalArgumentException,
                   IllegalStateException,
                   CacheException
Puts an item into the store..

Throws NonStopCacheException

Specified by:
put in interface Store
Returns:
true if this is a new put for the key or element is null. Returns false if it was an update.
Throws:
IllegalArgumentException
IllegalStateException
CacheException

putAll

public void putAll(Collection<Element> elements)
            throws CacheException
Puts a collection of elements into the store..

Throws NonStopCacheException

Specified by:
putAll in interface Store
Parameters:
elements - Collection of elements to be put in the store
Throws:
CacheException

remove

public Element remove(Object key)
               throws IllegalStateException
Removes an item from the cache..

Throws NonStopCacheException

Specified by:
remove in interface Store
Throws:
IllegalStateException

removeAll

public void removeAll(Collection<?> keys)
               throws IllegalStateException
Removes a collection of elements from the cache..

Throws NonStopCacheException

Specified by:
removeAll in interface Store
Throws:
IllegalStateException

removeAll

public void removeAll()
               throws IllegalStateException,
                      CacheException
Remove all of the elements from the store.

If there are registered CacheEventListeners they are notified of the expiry or removal of the Element as each is removed..

Throws NonStopCacheException

Specified by:
removeAll in interface Store
Throws:
IllegalStateException
CacheException

flush

public void flush()
           throws IllegalStateException,
                  CacheException
Flush elements to persistent store..

Throws NonStopCacheException

Specified by:
flush in interface Store
Throws:
IllegalStateException
CacheException

getInternalContext

public Object getInternalContext()
This should not be used, and will generally return null.

Throws NonStopCacheException

Specified by:
getInternalContext in interface Store
Returns:
some internal context (probably null)

getSize

public int getSize()
            throws IllegalStateException,
                   CacheException
Returns the current local store size.

Throws NonStopCacheException

Specified by:
getSize in interface Store
Returns:
the count of the Elements in the Store on the local machine
Throws:
IllegalStateException
CacheException

putIfAbsent

public Element putIfAbsent(Element element)
                    throws NullPointerException
Put an element in the store if no element is currently mapped to the elements key..

Throws NonStopCacheException

Specified by:
putIfAbsent in interface Store
Parameters:
element - element to be added
Returns:
the element previously cached for this key, or null if none.
Throws:
NullPointerException - if the element is null, or has a null key

replace

public Element replace(Element element)
                throws NullPointerException
Replace the cached element only if an Element is currently cached for this key.

Throws NonStopCacheException

Specified by:
replace in interface Store
Parameters:
element - Element to be cached
Returns:
the Element previously cached for this key, or null if no Element was cached
Throws:
NullPointerException - if the Element is null or has a null key

addStoreListener

public void addStoreListener(StoreListener listener)
Add a listener to the store..

Throws NonStopCacheException

Specified by:
addStoreListener in interface Store

bufferFull

public boolean bufferFull()
Some store types, such as the disk stores can fill their write buffers if puts come in too fast. The thread will wait for a short time before checking again..

Throws NonStopCacheException

Specified by:
bufferFull in interface Store
Returns:
true if the store write buffer is backed up.

containsKey

public boolean containsKey(Object key)
A check to see if a key is in the Store..

Throws NonStopCacheException

Specified by:
containsKey in interface Store
Parameters:
key - The Element key
Returns:
true if found. No check is made to see if the Element is expired. 1.2

containsKeyInMemory

public boolean containsKeyInMemory(Object key)
A check to see if a key is in the Store and is currently held in memory..

Throws NonStopCacheException

Specified by:
containsKeyInMemory in interface Store
Parameters:
key - The Element key
Returns:
true if found. No check is made to see if the Element is expired.

containsKeyOffHeap

public boolean containsKeyOffHeap(Object key)
A check to see if a key is in the Store and is currently held off-heap..

Throws NonStopCacheException

Specified by:
containsKeyOffHeap in interface Store
Parameters:
key - The Element key
Returns:
true if found. No check is made to see if the Element is expired.

containsKeyOnDisk

public boolean containsKeyOnDisk(Object key)
A check to see if a key is in the Store and is currently held on disk..

Throws NonStopCacheException

Specified by:
containsKeyOnDisk in interface Store
Parameters:
key - The Element key
Returns:
true if found. No check is made to see if the Element is expired.

dispose

public void dispose()
Prepares for shutdown..

Throws NonStopCacheException

Specified by:
dispose in interface Store

executeQuery

public Results executeQuery(StoreQuery query)
Execute the given query on this store.

Throws NonStopCacheException

Specified by:
executeQuery in interface Store
Parameters:
query - query to execute
Returns:
query results

expireElements

public void expireElements()
Expire all elements..

Throws NonStopCacheException

Specified by:
expireElements in interface Store

getInMemoryEvictionPolicy

public Policy getInMemoryEvictionPolicy()
.

Throws NonStopCacheException

Specified by:
getInMemoryEvictionPolicy in interface Store
Returns:
the current eviction policy. This may not be the configured policy, if it has been dynamically set.
See Also:
Store.setInMemoryEvictionPolicy(Policy)

getInMemorySize

public int getInMemorySize()
Returns the current local in-memory store size.

Throws NonStopCacheException

Specified by:
getInMemorySize in interface Store
Returns:
the count of the Elements in the Store and in-memory on the local machine

getInMemorySizeInBytes

public long getInMemorySizeInBytes()
Gets the size of the in-memory portion of the store, in bytes.

This method may be expensive to run, depending on implementation. Implementers may choose to return an approximate size..

Throws NonStopCacheException

Specified by:
getInMemorySizeInBytes in interface Store
Returns:
the approximate in-memory size of the store in bytes

getMBean

public Object getMBean()
Optional implementation specific MBean exposed by the store..

Throws NonStopCacheException

Specified by:
getMBean in interface Store
Returns:
implementation specific management bean

getOffHeapSize

public int getOffHeapSize()
Returns the current local off-heap store size.

Throws NonStopCacheException

Specified by:
getOffHeapSize in interface Store
Returns:
the count of the Elements in the Store and off-heap on the local machine

getOffHeapSizeInBytes

public long getOffHeapSizeInBytes()
Gets the size of the off-heap portion of the store, in bytes..

Throws NonStopCacheException

Specified by:
getOffHeapSizeInBytes in interface Store
Returns:
the approximate off-heap size of the store in bytes

getOnDiskSize

public int getOnDiskSize()
Returns the current local on-disk store size.

Throws NonStopCacheException

Specified by:
getOnDiskSize in interface Store
Returns:
the count of the Elements in the Store and on-disk on the local machine

getOnDiskSizeInBytes

public long getOnDiskSizeInBytes()
Gets the size of the on-disk portion of the store, in bytes..

Throws NonStopCacheException

Specified by:
getOnDiskSizeInBytes in interface Store
Returns:
the on-disk size of the store in bytes

hasAbortedSizeOf

public boolean hasAbortedSizeOf()
Checks if the cache may contain elements for which the SizeOf engine gave up and only partially calculated the size..

Throws NonStopCacheException

Specified by:
hasAbortedSizeOf in interface Store
Returns:
true if at least one partially sized element may be in the cache

getStatus

public Status getStatus()
Returns the cache status..

Throws NonStopCacheException

Specified by:
getStatus in interface Store

getTerracottaClusteredSize

public int getTerracottaClusteredSize()
Returns the current Terracotta clustered store size.

Throws NonStopCacheException

Specified by:
getTerracottaClusteredSize in interface Store
Returns:
the count of the Elements in the Store across the cluster

isCacheCoherent

public boolean isCacheCoherent()
Indicates whether this store provides a coherent view of all the elements in a cache. Note that this is same as calling Store.isClusterCoherent() (introduced since 2.0) Use Store.isNodeCoherent() to find out if the cache is coherent in the current node in the cluster.

Throws NonStopCacheException

Specified by:
isCacheCoherent in interface Store
Returns:
true if the store is coherent; or false if the store potentially splits the cache storage with another store or isn't internally coherent

isClusterCoherent

public boolean isClusterCoherent()
Returns true if the cache is in coherent mode cluster-wide. Returns false otherwise.

It applies to coherent clustering mechanisms only e.g. Terracotta.

Throws NonStopCacheException

Specified by:
isClusterCoherent in interface Store
Returns:
true if the cache is in coherent mode cluster-wide, false otherwise

isNodeCoherent

public boolean isNodeCoherent()
Returns true if the cache is in coherent mode for the current node. Returns false otherwise.

It applies to coherent clustering mechanisms only e.g. Terracotta.

Throws NonStopCacheException

Specified by:
isNodeCoherent in interface Store
Returns:
true if the cache is in coherent mode cluster-wide, false otherwise

putWithWriter

public boolean putWithWriter(Element element,
                             CacheWriterManager writerManager)
                      throws CacheException
Puts an item into the store and the cache writer manager in an atomic operation.

Throws NonStopCacheException

Specified by:
putWithWriter in interface Store
Returns:
true if this is a new put for the key or element is null. Returns false if it was an update.
Throws:
CacheException

removeElement

public Element removeElement(Element element,
                             ElementValueComparator comparator)
                      throws NullPointerException
Remove the Element mapped to the key for the supplied element if the value of the supplied Element is equal to the value of the cached Element. This is a CAS operation. It is consistent even against a distributed cache that is not coherent. If the old value is stale when this operation is attempted the remove does not take place..

Throws NonStopCacheException

Specified by:
removeElement in interface Store
Parameters:
element - Element to be removed
comparator - ElementValueComparator to use to compare elements
Returns:
the Element removed or null if no Element was removed
Throws:
NullPointerException - if the element is null, or has a null key

removeStoreListener

public void removeStoreListener(StoreListener listener)
Remove listener from store..

Throws NonStopCacheException

Specified by:
removeStoreListener in interface Store

removeWithWriter

public Element removeWithWriter(Object key,
                                CacheWriterManager writerManager)
                         throws CacheException
Removes an item from the store and the cache writer manager in an atomic operation..

Throws NonStopCacheException

Specified by:
removeWithWriter in interface Store
Throws:
CacheException

replace

public boolean replace(Element old,
                       Element element,
                       ElementValueComparator comparator)
                throws NullPointerException,
                       IllegalArgumentException
Replace the cached element only if the value of the current Element is equal to the value of the supplied old Element..

Throws NonStopCacheException

Specified by:
replace in interface Store
Parameters:
old - Element to be test against
element - Element to be cached
comparator - ElementValueComparator to use to compare elements
Returns:
true is the Element was replaced
Throws:
NullPointerException - if the either Element is null or has a null key
IllegalArgumentException - if the two Element keys are non-null but not equal

setAttributeExtractors

public void setAttributeExtractors(Map<String,AttributeExtractor> extractors)
Inform this store of the configured attribute extractors. Stores that will not invoke extractors are free to ignore this call.

Throws NonStopCacheException

Specified by:
setAttributeExtractors in interface Store

setInMemoryEvictionPolicy

public void setInMemoryEvictionPolicy(Policy policy)
Sets the eviction policy strategy. The Store will use a policy at startup. The store may allow changing the eviction policy strategy dynamically. Otherwise implementations will throw an exception if this method is called..

Throws NonStopCacheException

Specified by:
setInMemoryEvictionPolicy in interface Store
Parameters:
policy - the new policy

setNodeCoherent

public void setNodeCoherent(boolean coherent)
                     throws UnsupportedOperationException
Sets the cache in coherent or incoherent mode for the current node depending on the parameter. Calling setNodeCoherent(true) when the cache is already in coherent mode or calling setNodeCoherent(false) when already in incoherent mode will be a no-op.

It applies to coherent clustering mechanisms only e.g. Terracotta.

Throws NonStopCacheException

Specified by:
setNodeCoherent in interface Store
Parameters:
coherent - true transitions to coherent mode, false to incoherent mode
Throws:
UnsupportedOperationException - if this store does not support cache coherence, like RMI replication

waitUntilClusterCoherent

public void waitUntilClusterCoherent()
                              throws UnsupportedOperationException
This method waits until the cache is in coherent mode in all the connected nodes. If the cache is already in coherent mode it returns immediately

It applies to coherent clustering mechanisms only e.g. Terracotta.

Throws NonStopCacheException

Specified by:
waitUntilClusterCoherent in interface Store
Throws:
UnsupportedOperationException - if this store does not support cache coherence, like RMI replication

getSearchAttribute

public <T> Attribute<T> getSearchAttribute(String attributeName)
Retrieve the given named search attribute.

Throws NonStopCacheException

Specified by:
getSearchAttribute in interface Store
Type Parameters:
T - type of the attribute
Parameters:
attributeName - the name of the attribute to retrieve
Returns:
the search attribute or null if non-existent

getLocalKeys

public Set getLocalKeys()
Returns set of keys from the cache which are present in the node locally.

Specified by:
getLocalKeys in interface TerracottaStore
Returns:
set of keys present locally in the node

getTransactionalMode

public CacheConfiguration.TransactionalMode getTransactionalMode()
Get the transactional mode of this store. The returned value is the String value of CacheConfiguration.TransactionalMode.

Specified by:
getTransactionalMode in interface TerracottaStore
Returns:
a String representation of this store's transactional mode.
See Also:
CacheConfiguration.TransactionalMode

unlockedGet

public Element unlockedGet(Object key)
Gets the value associated with the key without acquiring any locks. This may return stale values as locks are not acquired.

Specified by:
unlockedGet in interface TerracottaStore
Returns:
the element associated with the key or null

unlockedGetQuiet

public Element unlockedGetQuiet(Object key)
Same as TerracottaStore.unlockedGet(Object) but does not update statistics

Specified by:
unlockedGetQuiet in interface TerracottaStore
Returns:
the element associated with the key or null

unsafeGet

public Element unsafeGet(Object key)
Returns the local value associated with the key. Local value means that the object mapped to the key is present in the VM locally. In case its not, will return null. Note that even when returning null, the value may be present in the Terracotta server array.

This operation does not acquire any locks when doing the operation and may return stale values.

Specified by:
unsafeGet in interface TerracottaStore
Parameters:
key - the key
Returns:
the element associated with key or null

unsafeGetQuiet

public Element unsafeGetQuiet(Object key)
Same as TerracottaStore.unsafeGet(Object) but does not update last usage statistics

Specified by:
unsafeGetQuiet in interface TerracottaStore
Parameters:
key - the key
Returns:
the element associated with key or null

executeClusterOperation

public <V> V executeClusterOperation(ClusterOperation<V> operation)
Execute the ClusterOperation within this NonstopStore context.

Specified by:
executeClusterOperation in interface NonstopStore
Type Parameters:
V - Return type depending on the ClusterOperation
Returns:
the return value depending on the ClusterOperation

recalculateSize

public void recalculateSize(Object key)
Recalculate size of the element mapped to the key

Specified by:
recalculateSize in interface Store
Parameters:
key - the key

ehcache

Copyright © 2003-2012 Terracotta, Inc.. All Rights Reserved.