Class ConcurrentQueryCache

All Implemented Interfaces:
Serializable, QueryCache, TypesChangedListener, RemoteCommitListener, Configurable, Closeable, EventManager

public class ConcurrentQueryCache extends AbstractQueryCache implements RemoteCommitListener
A QueryCache implementation that is optimized for concurrent access. When the cache fill up, values to remove from the cache are chosen randomly. Due to race conditions, it is possible that a get call might not retur a cached instance if that instance is being transferred between internal datastructures.
Since:
0.4.1
See Also:
  • Field Details

    • _lru

      protected boolean _lru
  • Constructor Details

    • ConcurrentQueryCache

      public ConcurrentQueryCache()
  • Method Details

    • getCacheMap

      public CacheMap getCacheMap()
      Returns the underlying CacheMap that this cache is using. This is not an unmodifiable view on the map, so care should be taken with this reference. Implementations should probably not modify the contents of the cache, but should only use this reference to obtain cache metrics. Additionally, this map may contain expired data. Removal of timed-out data is done in a lazy fashion, so the actual size of the map may be greater than the number of non-expired query results in cache.
    • getCacheSize

      public int getCacheSize()
      Returns the maximum number of unpinned objects to keep hard references to.
    • setCacheSize

      public void setCacheSize(int size)
      Sets the maximum number of unpinned objects to keep hard references to. If the map contains more unpinned objects than size, then this method will result in the cache flushing old values.
    • getSoftReferenceSize

      public int getSoftReferenceSize()
      Returns the maximum number of unpinned objects to keep soft references to. Defaults to -1.
    • setSoftReferenceSize

      public void setSoftReferenceSize(int size)
      Sets the maximum number of unpinned objects to keep soft references to. If the map contains more soft references than size, then this method will result in the cache flushing values.
    • initialize

      public void initialize(DataCacheManager mgr)
      Description copied from interface: QueryCache
      Initialize any resources associated with the given DataCacheManager.
      Specified by:
      initialize in interface QueryCache
      Overrides:
      initialize in class AbstractQueryCache
    • writeLock

      public void writeLock()
      Description copied from interface: QueryCache
      Obtain a write lock on the cache.
      Specified by:
      writeLock in interface QueryCache
    • writeUnlock

      public void writeUnlock()
      Description copied from interface: QueryCache
      Release the write lock on the cache.
      Specified by:
      writeUnlock in interface QueryCache
    • newCacheMap

      protected CacheMap newCacheMap()
      Return the map to use as an internal cache.
    • getInternal

      protected QueryResult getInternal(QueryKey qk)
      Description copied from class: AbstractQueryCache
      Return the list for the given key.
      Specified by:
      getInternal in class AbstractQueryCache
    • putInternal

      protected QueryResult putInternal(QueryKey qk, QueryResult result)
      Description copied from class: AbstractQueryCache
      Add the given result to the cache, returning the old result under the given key.
      Specified by:
      putInternal in class AbstractQueryCache
    • removeInternal

      protected QueryResult removeInternal(QueryKey qk)
      Description copied from class: AbstractQueryCache
      Remove the result under the given key from the cache.
      Specified by:
      removeInternal in class AbstractQueryCache
    • clearInternal

      protected void clearInternal()
      Description copied from class: AbstractQueryCache
      Clear the cache.
      Specified by:
      clearInternal in class AbstractQueryCache
    • pinInternal

      protected boolean pinInternal(QueryKey qk)
      Description copied from class: AbstractQueryCache
      Pin an object to the cache.
      Specified by:
      pinInternal in class AbstractQueryCache
    • unpinInternal

      protected boolean unpinInternal(QueryKey qk)
      Description copied from class: AbstractQueryCache
      Unpin an object from the cache.
      Specified by:
      unpinInternal in class AbstractQueryCache
    • keySet

      protected Collection keySet()
      Description copied from class: AbstractQueryCache
      Return a threadsafe view of the keys in this cache. This collection must be iterable without risk of concurrent modification exceptions. It does not have to implement contains() efficiently or use set semantics.
      Specified by:
      keySet in class AbstractQueryCache
    • getEvictPolicy

      public AbstractQueryCache.EvictPolicy getEvictPolicy()
      Returns the eviction policy of the query cache
      Overrides:
      getEvictPolicy in class AbstractQueryCache
      Returns:
      -- returns a String value of evictPolicy attribute
    • setLru

      public void setLru(boolean l)
    • getLru

      public boolean getLru()