use of com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry in project hazelcast by hazelcast.
the class WriteBehindQueueTest method testGetWithCount.
private void testGetWithCount(WriteBehindQueue<DelayedEntry> queue, int queueSize, final int fetchNumberOfEntries) {
final List<DelayedEntry> delayedEntries = createDelayedEntryList(queueSize);
for (DelayedEntry entry : delayedEntries) {
queue.addLast(entry);
}
List<DelayedEntry> entries = new ArrayList<DelayedEntry>();
queue.filter(new IPredicate<DelayedEntry>() {
int count = 0;
@Override
public boolean test(DelayedEntry delayedEntry) {
return count++ < fetchNumberOfEntries;
}
}, entries);
int expectedFetchedEntryCount = Math.min(queueSize, fetchNumberOfEntries);
assertEquals(expectedFetchedEntryCount, entries.size());
}
use of com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry in project hazelcast by hazelcast.
the class WriteBehindStore method flush.
@Override
public Object flush(Data key, Object value, boolean backup) {
if (NATIVE == inMemoryFormat) {
key = toData(key);
value = toData(value);
}
DelayedEntry delayedEntry = stagingArea.get(key);
if (delayedEntry == TRANSIENT) {
stagingArea.remove(key);
return null;
}
if (writeBehindQueue.size() == 0 || !writeBehindQueue.contains(DelayedEntries.createWithoutValue(key))) {
return null;
}
addAndGetSequence(false);
return value;
}
use of com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry in project hazelcast by hazelcast.
the class WriteBehindStore method loadAll.
@Override
public Map loadAll(Collection keys) {
if (keys == null || keys.isEmpty()) {
return Collections.emptyMap();
}
Map<Object, Object> map = new HashMap<Object, Object>();
Iterator iterator = keys.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
Data dataKey = toData(key);
DelayedEntry delayedEntry = getFromStagingArea(dataKey);
if (delayedEntry != null) {
Object value = delayedEntry.getValue();
if (value != null) {
map.put(dataKey, toObject(value));
}
iterator.remove();
}
}
map.putAll(super.loadAll(keys));
return map;
}
use of com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry in project hazelcast by hazelcast.
the class AwaitMapFlushOperation method shouldWait.
@Override
public boolean shouldWait() {
WriteBehindQueue<DelayedEntry> writeBehindQueue = store.getWriteBehindQueue();
DelayedEntry entry = writeBehindQueue.peek();
if (entry == null) {
return false;
}
long currentSequence = entry.getSequence();
return currentSequence <= this.sequence && writeBehindQueue.size() + currentSequence - 1 >= this.sequence;
}
use of com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry in project hazelcast by hazelcast.
the class DefaultWriteBehindProcessor method prepareBatchMap.
private Map prepareBatchMap(DelayedEntry[] delayedEntries) {
final Map<Object, DelayedEntry> batchMap = new HashMap<Object, DelayedEntry>();
final int length = delayedEntries.length;
// last store operation on a specific key
for (int i = length - 1; i >= 0; i--) {
final DelayedEntry delayedEntry = delayedEntries[i];
final Object key = delayedEntry.getKey();
if (!batchMap.containsKey(key)) {
batchMap.put(key, delayedEntry);
}
}
return batchMap;
}
Aggregations