use of com.hazelcast.map.impl.querycache.accumulator.Accumulator in project hazelcast by hazelcast.
the class AccumulatorSweeper method flushAllAccumulators.
public static void flushAllAccumulators(PublisherContext publisherContext) {
QueryCacheContext context = publisherContext.getContext();
EventPublisherAccumulatorProcessor processor = new EventPublisherAccumulatorProcessor(context.getQueryCacheEventService());
PublisherAccumulatorHandler handler = new PublisherAccumulatorHandler(context, processor);
MapPublisherRegistry mapPublisherRegistry = publisherContext.getMapPublisherRegistry();
Map<String, PublisherRegistry> allPublisherRegistryMap = mapPublisherRegistry.getAll();
for (PublisherRegistry publisherRegistry : allPublisherRegistryMap.values()) {
Map<String, PartitionAccumulatorRegistry> accumulatorRegistryMap = publisherRegistry.getAll();
for (PartitionAccumulatorRegistry accumulatorRegistry : accumulatorRegistryMap.values()) {
Map<Integer, Accumulator> accumulatorMap = accumulatorRegistry.getAll();
for (Map.Entry<Integer, Accumulator> entry : accumulatorMap.entrySet()) {
Integer partitionId = entry.getKey();
Accumulator accumulator = entry.getValue();
processor.setInfo(accumulator.getInfo());
// give 0 to delay-time in order to fetch all events in the accumulator
accumulator.poll(handler, 0, TimeUnit.SECONDS);
// send end event
QueryCacheEventData eventData = createEndOfSequenceEvent(partitionId);
processor.process(eventData);
}
}
}
}
use of com.hazelcast.map.impl.querycache.accumulator.Accumulator in project hazelcast by hazelcast.
the class DefaultQueryCache method getOrNullSubscriberAccumulator.
private SubscriberAccumulator getOrNullSubscriberAccumulator() {
SubscriberContext subscriberContext = context.getSubscriberContext();
MapSubscriberRegistry mapSubscriberRegistry = subscriberContext.getMapSubscriberRegistry();
SubscriberRegistry subscriberRegistry = mapSubscriberRegistry.getOrNull(mapName);
if (subscriberRegistry == null) {
return null;
}
Accumulator accumulator = subscriberRegistry.getOrNull(cacheId);
if (accumulator == null) {
return null;
}
return (SubscriberAccumulator) accumulator;
}
use of com.hazelcast.map.impl.querycache.accumulator.Accumulator in project hazelcast by hazelcast.
the class ClientQueryCacheContext method recreateAllCaches.
public void recreateAllCaches() {
// Since query cache is lost we are firing event lost event for each cache and for each partition
QueryCacheFactory queryCacheFactory = subscriberContext.getQueryCacheFactory();
Map<String, SubscriberRegistry> registryMap = subscriberContext.getMapSubscriberRegistry().getAll();
for (SubscriberRegistry subscriberRegistry : registryMap.values()) {
Map<String, Accumulator> accumulatorMap = subscriberRegistry.getAll();
for (Accumulator accumulator : accumulatorMap.values()) {
AccumulatorInfo info = accumulator.getInfo();
String cacheId = info.getCacheId();
InternalQueryCache queryCache = queryCacheFactory.getOrNull(cacheId);
if (queryCache != null) {
queryCache.recreate();
}
}
}
}
Aggregations