public class DefaultRecordStore extends Object implements RecordStore
| Modifier and Type | Field and Description |
|---|---|
protected static long |
DEFAULT_TTL |
protected boolean |
expirable
Flag for checking if this record store has at least one candidate entry
for expiration (idle or tll) or not.
|
protected Iterator<com.hazelcast.map.record.Record> |
expirationIterator
Iterates over a pre-set entry count/percentage in one round.
|
protected long |
lastEvictionTime
Last run time of cleanup operation.
|
protected long |
lruAccessSequenceNumber
used in LRU eviction logic.
|
protected MapContainer |
mapContainer |
protected MapServiceContext |
mapServiceContext |
protected String |
name |
protected int |
partitionId |
protected static int |
POST_READ_CHECK_POINT
Number of reads before clean up.
|
protected int |
readCountBeforeCleanUp
If there is no clean-up caused by puts after some time,
count a number of gets and start eviction.
|
protected com.hazelcast.map.record.RecordFactory |
recordFactory |
protected ConcurrentMap<Data,com.hazelcast.map.record.Record> |
records |
protected SerializationService |
serializationService |
| Constructor and Description |
|---|
DefaultRecordStore(MapContainer mapContainer,
int partitionId) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
accessRecord(com.hazelcast.map.record.Record record) |
protected void |
accessRecord(com.hazelcast.map.record.Record record,
long now) |
protected long |
calculateRecordHeapCost(Collection<com.hazelcast.map.record.Record> collection)
Returns total heap cost of collection.
|
protected long |
calculateRecordHeapCost(com.hazelcast.map.record.Record record) |
boolean |
canAcquireLock(Data key,
String caller,
long threadId) |
void |
checkIfLoaded() |
int |
clear() |
void |
clearPartition() |
protected void |
clearRecordsMap(Map<Data,com.hazelcast.map.record.Record> excludeRecords) |
boolean |
containsKey(Data key) |
boolean |
containsValue(Object value) |
protected com.hazelcast.concurrent.lock.LockStore |
createLockStore() |
protected com.hazelcast.map.record.Record |
createRecord(Data key,
Object value,
long now) |
protected com.hazelcast.map.record.Record |
createRecord(Data key,
Object value,
long ttl,
long now) |
protected com.hazelcast.map.RecordStoreLoader |
createRecordStoreLoader() |
boolean |
delete(Data key) |
void |
deleteRecord(Data key) |
Set<Map.Entry<Data,Data>> |
entrySetData() |
Object |
evict(Data key,
boolean backup) |
int |
evictAll(boolean backup)
Evicts all keys except locked ones.
|
protected void |
evictEntries(long now,
boolean backup)
TODO make checkEvictable fast by carrying threshold logic to partition.
|
void |
evictExpiredEntries(int percentage,
boolean backup)
Do expiration operations.
|
boolean |
extendLock(Data key,
String caller,
long threadId,
long ttl) |
void |
flush() |
boolean |
forceUnlock(Data dataKey) |
Object |
get(Data key) |
MapEntrySet |
getAll(Set<Data> keys) |
long |
getHeapCost() |
String |
getLockOwnerInfo(Data key) |
MapContainer |
getMapContainer() |
com.hazelcast.map.mapstore.MapDataStore<Data,Object> |
getMapDataStore() |
Map.Entry<Data,Object> |
getMapEntry(Data key) |
Map.Entry<Data,Object> |
getMapEntryForBackup(Data dataKey) |
String |
getName() |
protected long |
getNow() |
protected com.hazelcast.map.record.Record |
getOrNullIfExpired(com.hazelcast.map.record.Record record,
boolean backup)
Check if record is reachable according to ttl or idle times.
|
int |
getPartitionId() |
com.hazelcast.map.record.Record |
getRecord(Data key) |
Map<Data,com.hazelcast.map.record.Record> |
getRecordMap()
Returns records map.
|
protected void |
increaseRecordEvictionCriteriaNumber(com.hazelcast.map.record.Record record,
MapConfig.EvictionPolicy evictionPolicy) |
boolean |
isEmpty() |
boolean |
isExpirable() |
boolean |
isLoaded() |
boolean |
isLocked(Data dataKey) |
Iterator<com.hazelcast.map.record.Record> |
iterator()
Iterates over record store values.
|
Set<Data> |
keySet() |
void |
loadAllFromStore(List<Data> keys,
boolean replaceExistingValues)
Loads all keys from defined map store.
|
Iterator<com.hazelcast.map.record.Record> |
loadAwareIterator()
Iterates over record store values but first waits map store to load.
|
protected void |
markRecordStoreExpirable(long ttl) |
boolean |
merge(Data key,
EntryView mergingEntry,
MapMergePolicy mergePolicy) |
protected void |
onStore(com.hazelcast.map.record.Record record) |
protected void |
postReadCleanUp(long now,
boolean backup)
If there is no clean-up caused by puts after some time,
try to clean-up from gets.
|
Object |
put(Data key,
Object value,
long ttl) |
void |
put(Map.Entry<Data,Object> entry) |
com.hazelcast.map.record.Record |
putBackup(Data key,
Object value) |
com.hazelcast.map.record.Record |
putBackup(Data key,
Object value,
long ttl) |
Object |
putFromLoad(Data key,
Object value)
Puts key-value pair to map which is the result of a load from map store operation.
|
Object |
putFromLoad(Data key,
Object value,
long ttl)
Puts key-value pair to map which is the result of a load from map store operation.
|
Object |
putIfAbsent(Data key,
Object value,
long ttl) |
void |
putRecord(Data key,
com.hazelcast.map.record.Record record)
Puts a data key and a record value to record-store.
|
void |
putTransient(Data key,
Object value,
long ttl) |
Object |
remove(Data key) |
boolean |
remove(Data key,
Object testValue) |
void |
removeBackup(Data key)
Similar to
RecordStore.remove(com.hazelcast.nio.serialization.Data)
except removeBackup doesn't touch mapstore since it does not return previous value. |
protected void |
removeIndex(Data key) |
protected void |
removeIndex(Set<Data> keys) |
protected void |
removeIndexByPreservingKeys(Set<Data> keysToRemove,
Set<Data> keysToPreserve)
Removes indexes by excluding keysToPreserve.
|
Object |
replace(Data key,
Object value) |
boolean |
replace(Data key,
Object testValue,
Object newValue) |
void |
reset() |
protected void |
resetAccessSequenceNumber() |
protected void |
resetSizeEstimator() |
protected void |
saveIndex(com.hazelcast.map.record.Record record) |
boolean |
set(Data key,
Object value,
long ttl) |
void |
setLoaded(boolean loaded) |
protected void |
setRecordValue(com.hazelcast.map.record.Record record,
Object value,
long now) |
void |
setSizeEstimator(SizeEstimator sizeEstimator) |
int |
size()
Size may not give precise size at a specific moment
due to the expiration logic.
|
protected Data |
toData(Object value) |
boolean |
tryPut(Data key,
Object value,
long ttl) |
boolean |
txnLock(Data key,
String caller,
long threadId,
long ttl) |
boolean |
unlock(Data key,
String caller,
long threadId) |
protected void |
updateSizeEstimator(long recordSize) |
protected void |
updateTtl(com.hazelcast.map.record.Record record,
long ttl) |
Collection<Data> |
valuesData() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitevictExpiredEntries, getHeapCost, getMapContainer, getName, getPartitionId, isExpirableprotected static final int POST_READ_CHECK_POINT
protected volatile boolean expirable
protected Iterator<com.hazelcast.map.record.Record> expirationIterator
protected int readCountBeforeCleanUp
protected long lruAccessSequenceNumber
protected long lastEvictionTime
protected static final long DEFAULT_TTL
protected final ConcurrentMap<Data,com.hazelcast.map.record.Record> records
protected final com.hazelcast.map.record.RecordFactory recordFactory
protected final String name
protected final MapContainer mapContainer
protected final MapServiceContext mapServiceContext
protected final SerializationService serializationService
protected final int partitionId
public DefaultRecordStore(MapContainer mapContainer, int partitionId)
public boolean isLoaded()
isLoaded in interface RecordStorepublic void setLoaded(boolean loaded)
setLoaded in interface RecordStorepublic void checkIfLoaded()
checkIfLoaded in interface RecordStorepublic void flush()
flush in interface RecordStorepublic com.hazelcast.map.record.Record getRecord(Data key)
getRecord in interface RecordStorepublic void putRecord(Data key, com.hazelcast.map.record.Record record)
RecordStoreputRecord in interface RecordStorekey - the data key to put record store.record - the value for record store.com.hazelcast.map.operation.MapReplicationOperation}public com.hazelcast.map.record.Record putBackup(Data key, Object value)
putBackup in interface RecordStorepublic com.hazelcast.map.record.Record putBackup(Data key, Object value, long ttl)
putBackup in interface RecordStorekey - the key to be processed.value - the value to be processed.ttl - milliseconds. Check out MapProxySupport.putInternal(com.hazelcast.nio.serialization.Data, com.hazelcast.nio.serialization.Data, long, java.util.concurrent.TimeUnit)public void deleteRecord(Data key)
deleteRecord in interface RecordStorepublic Iterator<com.hazelcast.map.record.Record> iterator()
RecordStoreiterator in interface RecordStorepublic Iterator<com.hazelcast.map.record.Record> loadAwareIterator()
RecordStoreIMap.keySet(com.hazelcast.query.Predicate),
this method can be used to return a read-only iterator.loadAwareIterator in interface RecordStorepublic Map<Data,com.hazelcast.map.record.Record> getRecordMap()
RecordStoregetRecordMap in interface RecordStoreRecordStoreLoaderpublic void clearPartition()
clearPartition in interface RecordStorepublic int size()
size in interface RecordStorepublic boolean isEmpty()
isEmpty in interface RecordStorepublic boolean containsValue(Object value)
containsValue in interface RecordStorepublic boolean txnLock(Data key, String caller, long threadId, long ttl)
txnLock in interface RecordStorepublic boolean extendLock(Data key, String caller, long threadId, long ttl)
extendLock in interface RecordStorepublic boolean unlock(Data key, String caller, long threadId)
unlock in interface RecordStorepublic boolean forceUnlock(Data dataKey)
forceUnlock in interface RecordStorepublic boolean isLocked(Data dataKey)
isLocked in interface RecordStorepublic boolean canAcquireLock(Data key, String caller, long threadId)
canAcquireLock in interface RecordStorepublic String getLockOwnerInfo(Data key)
getLockOwnerInfo in interface RecordStorepublic Set<Map.Entry<Data,Data>> entrySetData()
entrySetData in interface RecordStorepublic Map.Entry<Data,Object> getMapEntry(Data key)
getMapEntry in interface RecordStorepublic Map.Entry<Data,Object> getMapEntryForBackup(Data dataKey)
getMapEntryForBackup in interface RecordStorepublic Set<Data> keySet()
keySet in interface RecordStorepublic Collection<Data> valuesData()
valuesData in interface RecordStorepublic int clear()
clear in interface RecordStorepublic void reset()
reset in interface RecordStorepublic Object evict(Data key, boolean backup)
evict in interface RecordStorepublic int evictAll(boolean backup)
RecordStoreevictAll in interface RecordStorebackup - true if a backup partition, otherwise false.public void removeBackup(Data key)
RecordStoreRecordStore.remove(com.hazelcast.nio.serialization.Data)
except removeBackup doesn't touch mapstore since it does not return previous value.removeBackup in interface RecordStorepublic Object remove(Data key)
remove in interface RecordStorepublic boolean remove(Data key, Object testValue)
remove in interface RecordStorepublic boolean delete(Data key)
delete in interface RecordStorepublic Object get(Data key)
get in interface RecordStorepublic MapEntrySet getAll(Set<Data> keys)
getAll in interface RecordStorepublic boolean containsKey(Data key)
containsKey in interface RecordStorepublic void put(Map.Entry<Data,Object> entry)
put in interface RecordStorepublic Object put(Data key, Object value, long ttl)
put in interface RecordStorepublic boolean set(Data key, Object value, long ttl)
set in interface RecordStorepublic boolean merge(Data key, EntryView mergingEntry, MapMergePolicy mergePolicy)
merge in interface RecordStorepublic Object replace(Data key, Object value)
replace in interface RecordStorepublic boolean replace(Data key, Object testValue, Object newValue)
replace in interface RecordStorepublic void putTransient(Data key, Object value, long ttl)
putTransient in interface RecordStorepublic Object putFromLoad(Data key, Object value)
RecordStoreputFromLoad in interface RecordStorekey - key to put.value - to put.com.hazelcast.map.operation.PutFromLoadAllOperation}public Object putFromLoad(Data key, Object value, long ttl)
RecordStoreputFromLoad in interface RecordStorekey - key to put.value - to put.ttl - time to live seconds.com.hazelcast.map.operation.PutAllOperation}public boolean tryPut(Data key, Object value, long ttl)
tryPut in interface RecordStorepublic Object putIfAbsent(Data key, Object value, long ttl)
putIfAbsent in interface RecordStorepublic void loadAllFromStore(List<Data> keys, boolean replaceExistingValues)
RecordStoreloadAllFromStore in interface RecordStorekeys - keys to be loaded.replaceExistingValues - true if need to replace existing values otherwise falsepublic com.hazelcast.map.mapstore.MapDataStore<Data,Object> getMapDataStore()
getMapDataStore in interface RecordStorepublic void evictExpiredEntries(int percentage,
boolean backup)
RecordStorepercentage - of max expirables according to the record store size.backup - true if a backup partition, otherwise false.public boolean isExpirable()
true if record store has at least one candidate entry
for expiration else return false.protected void resetAccessSequenceNumber()
protected void evictEntries(long now,
boolean backup)
now - now in time.protected void postReadCleanUp(long now,
boolean backup)
now - now.protected void markRecordStoreExpirable(long ttl)
protected com.hazelcast.map.record.Record getOrNullIfExpired(com.hazelcast.map.record.Record record,
boolean backup)
record - Recordprotected void increaseRecordEvictionCriteriaNumber(com.hazelcast.map.record.Record record,
MapConfig.EvictionPolicy evictionPolicy)
protected void accessRecord(com.hazelcast.map.record.Record record,
long now)
public String getName()
getName in interface RecordStorepublic MapContainer getMapContainer()
getMapContainer in interface RecordStorepublic long getHeapCost()
getHeapCost in interface RecordStoreprotected long getNow()
protected com.hazelcast.map.record.Record createRecord(Data key, Object value, long ttl, long now)
protected com.hazelcast.map.record.Record createRecord(Data key, Object value, long now)
protected void accessRecord(com.hazelcast.map.record.Record record)
protected void updateSizeEstimator(long recordSize)
protected long calculateRecordHeapCost(com.hazelcast.map.record.Record record)
protected long calculateRecordHeapCost(Collection<com.hazelcast.map.record.Record> collection)
collection - size to be calculated.protected void resetSizeEstimator()
protected void setRecordValue(com.hazelcast.map.record.Record record,
Object value,
long now)
public int getPartitionId()
getPartitionId in interface RecordStoreprotected void saveIndex(com.hazelcast.map.record.Record record)
protected void updateTtl(com.hazelcast.map.record.Record record,
long ttl)
protected void removeIndex(Data key)
protected void removeIndexByPreservingKeys(Set<Data> keysToRemove, Set<Data> keysToPreserve)
keysToRemove - remove these keys from index.keysToPreserve - do not remove these keys.protected com.hazelcast.concurrent.lock.LockStore createLockStore()
protected void onStore(com.hazelcast.map.record.Record record)
protected com.hazelcast.map.RecordStoreLoader createRecordStoreLoader()
protected void clearRecordsMap(Map<Data,com.hazelcast.map.record.Record> excludeRecords)
public void setSizeEstimator(SizeEstimator sizeEstimator)
Copyright © 2014 Hazelcast, Inc.. All Rights Reserved.