public class WriteBehindStore extends AbstractMapDataStore<Data,Object>
Modifier and Type | Class and Description |
---|---|
static class |
WriteBehindStore.Sequence
The purpose of this class is to provide distinction
between flushes caused by eviction and
IMap.flush() |
Constructor and Description |
---|
WriteBehindStore(MapStoreContext mapStoreContext,
int partitionId) |
Modifier and Type | Method and Description |
---|---|
Object |
add(Data key,
Object value,
long now) |
void |
add(DelayedEntry<Data,Object> delayedEntry) |
Object |
addBackup(Data key,
Object value,
long time) |
void |
addTransient(Data key,
long now) |
Object |
flush(Data key,
Object value,
boolean backup)
Flushes the supplied key to the map-store.
|
Queue<WriteBehindStore.Sequence> |
getFlushSequences() |
long |
getSequenceToFlush() |
WriteBehindQueue<DelayedEntry> |
getWriteBehindQueue() |
void |
hardFlush()
Flushes write-behind-queue into map-store in calling thread.
|
Object |
load(Data key) |
boolean |
loadable(Data key)
* Used in
IMap.loadAll(boolean) calls. |
Map |
loadAll(Collection keys) |
int |
notFinishedOperationsCount() |
void |
notifyFlush() |
void |
remove(Data key,
long now) |
void |
removeBackup(Data key,
long time) |
protected void |
removeFromStagingArea(DelayedEntry delayedEntry) |
void |
reset()
Returns all associated resources of this map-data-store back to the initial state.
|
void |
setFlushSequences(Queue<WriteBehindStore.Sequence> flushSequences) |
void |
setSequence(long newSequence) |
void |
setWriteBehindProcessor(WriteBehindProcessor writeBehindProcessor) |
void |
setWriteBehindQueue(WriteBehindQueue<DelayedEntry> writeBehindQueue) |
long |
softFlush()
Only marks this
MapDataStore as flush-able. |
convertToObjectKeys, getStore, isPostProcessingMapStore, removeAll, toData, toObject
public WriteBehindStore(MapStoreContext mapStoreContext, int partitionId)
public void add(DelayedEntry<Data,Object> delayedEntry)
public void addTransient(Data key, long now)
public void remove(Data key, long now)
public void removeBackup(Data key, long time)
public void reset()
MapDataStore
public Map loadAll(Collection keys)
loadAll
in interface MapDataStore<Data,Object>
loadAll
in class AbstractMapDataStore<Data,Object>
public boolean loadable(Data key)
IMap.loadAll(boolean)
calls.
If the write-behind map-store feature is enabled, some things may lead to possible data inconsistencies.
These are:
- calling evict/evictAll,
- calling remove, and
- not yet stored write-behind queue operations.
With this method, we can be sure if a key can be loadable from map-store or not.key
- the key to query whether it is loadable or not.true
if loadable, false otherwise.public int notFinishedOperationsCount()
public Object flush(Data key, Object value, boolean backup)
MapDataStore
key
- key to be flushedvalue
- value to be flushedbackup
- true
calling this method for backup partition, false
for owner partition.public long softFlush()
MapDataStore
MapDataStore
as flush-able. Flush means storing entries from write-behind-queue into map-store
regardless of the scheduled store-time. Actual flushing is done by another thread than partition-operation thread
which runs StoreWorker
.MapFlushOperation
public void hardFlush()
MapDataStore
WriteBehindQueue
of this MapDataStore
should be in map-store regardless of the scheduled store-time.
The only call to this method is in node-shutdown.MapManagedService.shutdown(boolean)
public WriteBehindQueue<DelayedEntry> getWriteBehindQueue()
public void setWriteBehindQueue(WriteBehindQueue<DelayedEntry> writeBehindQueue)
public void setWriteBehindProcessor(WriteBehindProcessor writeBehindProcessor)
public void setSequence(long newSequence)
public void notifyFlush()
protected void removeFromStagingArea(DelayedEntry delayedEntry)
public Queue<WriteBehindStore.Sequence> getFlushSequences()
public long getSequenceToFlush()
public void setFlushSequences(Queue<WriteBehindStore.Sequence> flushSequences)
Copyright © 2017 Hazelcast, Inc.. All Rights Reserved.