Package org.terracotta.offheapstore
Class WriteLockedOffHeapClockCache<K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- org.terracotta.offheapstore.OffHeapHashMap<K,V>
-
- org.terracotta.offheapstore.AbstractLockedOffHeapHashMap<K,V>
-
- org.terracotta.offheapstore.AbstractOffHeapClockCache<K,V>
-
- org.terracotta.offheapstore.WriteLockedOffHeapClockCache<K,V>
-
- Type Parameters:
K- the type of keys maintained by this mapV- the type of mapped values
- All Implemented Interfaces:
java.util.concurrent.ConcurrentMap<K,V>,java.util.concurrent.locks.ReadWriteLock,java.util.Map<K,V>,HashingMap<K,V>,MapInternals,PinnableCache<K,V>,PinnableSegment<K,V>,Segment<K,V>,StorageEngine.Owner
- Direct Known Subclasses:
EvictionListeningWriteLockedOffHeapClockCache
public class WriteLockedOffHeapClockCache<K,V> extends AbstractOffHeapClockCache<K,V>
An exclusive-read/write off-heap clock cache.This cache uses one of the unused bits in the off-heap entry's status value to store the clock data. This clock data is safe to update during read operations since the cache provides exclusive-read/write characteristics. Since clock eviction data resides in the hash-map's table, it is correctly copied across during table resize operations.
The cache uses a regular
ReentrantLockto provide exclusive read and write operations.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.terracotta.offheapstore.AbstractLockedOffHeapHashMap
AbstractLockedOffHeapHashMap.LockedEntryIterator, AbstractLockedOffHeapHashMap.LockedEntrySet, AbstractLockedOffHeapHashMap.LockedKeyIterator, AbstractLockedOffHeapHashMap.LockedKeySet
-
Nested classes/interfaces inherited from class org.terracotta.offheapstore.OffHeapHashMap
OffHeapHashMap.DirectEntry, OffHeapHashMap.EncodingIterator, OffHeapHashMap.EncodingSet, OffHeapHashMap.EntryIterator, OffHeapHashMap.EntrySet, OffHeapHashMap.HashIterator<T>, OffHeapHashMap.KeyIterator, OffHeapHashMap.KeySet, OffHeapHashMap.PendingPage
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.locks.Locklock-
Fields inherited from class org.terracotta.offheapstore.OffHeapHashMap
ENCODING, ENTRY_BIT_SHIFT, ENTRY_SIZE, hashtable, hashTablePage, KEY_HASHCODE, modCount, removedSlots, reprobeLimit, RESERVED_STATUS_BITS, size, STATUS, STATUS_REMOVED, STATUS_USED, storageEngine, tableSource
-
-
Constructor Summary
Constructors Constructor Description WriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K,? super V> storageEngine)WriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K,? super V> storageEngine, int tableSize)WriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K,? super V> storageEngine)WriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K,? super V> storageEngine, int tableSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.locks.ReentrantReadWriteLockgetLock()Return theReentrantReadWriteLockused by this segment.java.util.concurrent.locks.LockreadLock()java.util.concurrent.locks.LockwriteLock()-
Methods inherited from class org.terracotta.offheapstore.AbstractOffHeapClockCache
evict, evictable, getAndPin, getEvictionIndex, hit, isPinned, putPinned, setPinning, storageEngineFailure, tableExpansionFailure
-
Methods inherited from class org.terracotta.offheapstore.AbstractLockedOffHeapHashMap
clear, computeIfAbsentWithMetadata, computeIfPresentWithMetadata, computeWithMetadata, containsKey, createEntrySet, createKeySet, destroy, fill, fill, get, getAndSetMetadata, getEncodingForHashAndBinary, getMetadata, getValueAndSetMetadata, installMappingForHashAndEncoding, put, put, putIfAbsent, remove, remove, removeAllWithHash, removeMapping, removeNoReturn, replace, replace, shrink, size
-
Methods inherited from class org.terracotta.offheapstore.OffHeapHashMap
added, createEncodingSet, encodingSet, entrySet, fill, freePendingTables, getAllocatedMemory, getAtTableOffset, getDataAllocatedMemory, getDataOccupiedMemory, getDataSize, getDataVitalMemory, getEntryAtTableOffset, getOccupiedMemory, getRemovedSlotCount, getReprobeLength, getSize, getSlotForHashAndEncoding, getStorageEngine, getTableCapacity, getUsedSlotCount, getVitalMemory, indexFor, indexFor, isAvailable, isPresent, isRemoved, isRemoved, isTerminating, isTerminating, isThiefForTableAllocations, keySet, readLong, readLong, removeAtTableOffset, removed, shrinkTable, spread, tryIncreaseReprobe, updated, updateEncoding
-
Methods inherited from class java.util.AbstractMap
clone, containsValue, equals, hashCode, isEmpty, putAll, toString, values
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.concurrent.ConcurrentMap
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Methods inherited from interface org.terracotta.offheapstore.HashingMap
removeAllWithHash
-
Methods inherited from interface java.util.Map
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values
-
Methods inherited from interface org.terracotta.offheapstore.MapInternals
getAllocatedMemory, getDataAllocatedMemory, getDataOccupiedMemory, getDataSize, getDataVitalMemory, getOccupiedMemory, getRemovedSlotCount, getReprobeLength, getSize, getTableCapacity, getUsedSlotCount, getVitalMemory
-
Methods inherited from interface org.terracotta.offheapstore.Segment
computeIfAbsentWithMetadata, computeIfPresentWithMetadata, computeWithMetadata, destroy, fill, fill, getAndSetMetadata, getMetadata, getValueAndSetMetadata, put, removeNoReturn, shrink
-
-
-
-
Constructor Detail
-
WriteLockedOffHeapClockCache
public WriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K,? super V> storageEngine)
-
WriteLockedOffHeapClockCache
public WriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K,? super V> storageEngine)
-
WriteLockedOffHeapClockCache
public WriteLockedOffHeapClockCache(PageSource source, StorageEngine<? super K,? super V> storageEngine, int tableSize)
-
WriteLockedOffHeapClockCache
public WriteLockedOffHeapClockCache(PageSource source, boolean tableAllocationsSteal, StorageEngine<? super K,? super V> storageEngine, int tableSize)
-
-
Method Detail
-
readLock
public java.util.concurrent.locks.Lock readLock()
- Specified by:
readLockin interfacejava.util.concurrent.locks.ReadWriteLock- Specified by:
readLockin classAbstractLockedOffHeapHashMap<K,V>
-
writeLock
public java.util.concurrent.locks.Lock writeLock()
- Specified by:
writeLockin interfacejava.util.concurrent.locks.ReadWriteLock- Specified by:
writeLockin classAbstractLockedOffHeapHashMap<K,V>
-
getLock
public java.util.concurrent.locks.ReentrantReadWriteLock getLock()
Description copied from interface:SegmentReturn theReentrantReadWriteLockused by this segment.- Returns:
- RRWL for this segment
-
-