Search in sources :

Example 16 with DelayedEntry

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());
}
Also used : ArrayList(java.util.ArrayList) DelayedEntry(com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry)

Example 17 with DelayedEntry

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;
}
Also used : DelayedEntry(com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry)

Example 18 with DelayedEntry

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;
}
Also used : HashMap(java.util.HashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Iterator(java.util.Iterator) Data(com.hazelcast.nio.serialization.Data) DelayedEntry(com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry)

Example 19 with DelayedEntry

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;
}
Also used : DelayedEntry(com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry)

Example 20 with DelayedEntry

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;
}
Also used : HashMap(java.util.HashMap) DelayedEntry(com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry)

Aggregations

DelayedEntry (com.hazelcast.map.impl.mapstore.writebehind.entry.DelayedEntry)28 ArrayList (java.util.ArrayList)9 Data (com.hazelcast.nio.serialization.Data)7 HashMap (java.util.HashMap)6 List (java.util.List)6 WriteBehindStore (com.hazelcast.map.impl.mapstore.writebehind.WriteBehindStore)5 Map (java.util.Map)5 RecordStore (com.hazelcast.map.impl.recordstore.RecordStore)4 WriteBehindQueue (com.hazelcast.map.impl.mapstore.writebehind.WriteBehindQueue)3 ParallelTest (com.hazelcast.test.annotation.ParallelTest)3 QuickTest (com.hazelcast.test.annotation.QuickTest)3 Queue (java.util.Queue)3 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)3 Test (org.junit.Test)3 MapConfig (com.hazelcast.config.MapConfig)1 DefaultSerializationServiceBuilder (com.hazelcast.internal.serialization.impl.DefaultSerializationServiceBuilder)1 MapContainer (com.hazelcast.map.impl.MapContainer)1 MapService (com.hazelcast.map.impl.MapService)1 MapServiceContext (com.hazelcast.map.impl.MapServiceContext)1 MapDataStore (com.hazelcast.map.impl.mapstore.MapDataStore)1