@Override public boolean done() { Set<RegionQueue> queues = ((AbstractGatewaySender) sender).getQueues(); int size = 0; for (RegionQueue q : queues) { size += q.size(); } if (size == 0) { return true; } return false; }
@Override public String description() { Set<RegionQueue> queues = ((AbstractGatewaySender) sender).getQueues(); int size = 0; for (RegionQueue q : queues) { size += q.size(); } return "Expected queue size to be : " + 0 + " but actual entries: " + size; } };
protected GatewayQueueEvent getSynchronizationEvent(Object key, long timestamp) { GatewayQueueEvent event = null; for (RegionQueue queue : getQueues()) { Region region = queue.getRegion(); for (Iterator i = region.values().iterator(); i.hasNext();) { GatewaySenderEventImpl gsei = (GatewaySenderEventImpl) i.next(); if (gsei.getKey().equals(key) && gsei.getVersionTimeStamp() == timestamp) { event = gsei; logger.info("{}: Providing synchronization event for key={}; timestamp={}: {}", this, key, timestamp, event); this.statistics.incSynchronizationEventsProvided(); break; } } } return event; }
public static ParallelGatewaySenderEventProcessor createParallelGatewaySenderEventProcessor( AbstractGatewaySender sender) { ParallelGatewaySenderEventProcessor processor = new ParallelGatewaySenderEventProcessor(sender, null); ConcurrentParallelGatewaySenderQueue queue = new ConcurrentParallelGatewaySenderQueue(sender, new ParallelGatewaySenderEventProcessor[] {processor}); Set<RegionQueue> queues = new HashSet<>(); queues.add(queue); when(sender.getQueues()).thenReturn(queues); return processor; }
private boolean destroyFromTempQueue(PartitionedRegion qPR, int bId, Object key) { boolean isDestroyed = false; Set queues = qPR.getParallelGatewaySender().getQueues(); if (queues != null) { ConcurrentParallelGatewaySenderQueue prq = (ConcurrentParallelGatewaySenderQueue) queues.toArray()[0]; BlockingQueue<GatewaySenderEventImpl> tempQueue = prq.getBucketTmpQueue(bId); if (tempQueue != null) { Iterator<GatewaySenderEventImpl> itr = tempQueue.iterator(); while (itr.hasNext()) { GatewaySenderEventImpl eventForFilter = itr.next(); // fix for #48082 afterAckForSecondary_EventInTempQueue(qPR.getParallelGatewaySender(), eventForFilter); if (eventForFilter.getShadowKey().equals(key)) { itr.remove(); eventForFilter.release(); // GEODE-1282 isDestroyed = true; } } } } return isDestroyed; }
public static void checkAsyncEventQueueSize(String asyncQueueId, int numQueueEntries, boolean localSize) { AsyncEventQueueImpl aeq = (AsyncEventQueueImpl) cache.getAsyncEventQueue(asyncQueueId); GatewaySender sender = aeq.getSender(); if (sender.isParallel()) { Set<RegionQueue> queues = ((AbstractGatewaySender) sender).getQueues(); Region queueRegion = queues.toArray(new RegionQueue[queues.size()])[0].getRegion(); if (localSize) { queueRegion = PartitionRegionHelper.getLocalData(queueRegion); } assertEquals(numQueueEntries, queueRegion.size()); } else { Set<RegionQueue> queues = ((AbstractGatewaySender) sender).getQueues(); int size = 0; for (RegionQueue q : queues) { size += q.size(); } assertEquals(numQueueEntries, size); } }
@Override public void afterDestroy(EntryEvent event) { if (this.sender.isPrimary()) { return; } // fix bug 37603 // There is a small window where queue has not been created fully yet. The region is created, // and it receives afterDestroy callback. final Set<RegionQueue> queues = this.sender.getQueues(); if (queues != null && !queues.isEmpty()) { this.sender.getStatistics().decQueueSize(); } // Send event to the event dispatcher Object oldValue = event.getOldValue(); if (oldValue instanceof GatewaySenderEventImpl) { GatewaySenderEventImpl senderEvent = (GatewaySenderEventImpl) oldValue; if (logger.isDebugEnabled()) { logger.debug("Received after Destroy for Secondary event {} the key was {}", senderEvent, event.getKey()); } this.processor.handlePrimaryDestroy(senderEvent); } } }
@Override public void afterCreate(EntryEvent event) { if (this.sender.isPrimary()) { // The secondary has failed over to become the primary. There is a small // window where the secondary has become the primary, but the listener // is // still set. Ignore any updates to the map at this point. It is unknown // what the state of the map is. This may result in duplicate events // being sent. return; } // There is a small window where queue has not been created fully yet. // The underlying region of the queue is created, and it receives afterDestroy callback final Set<RegionQueue> queues = this.sender.getQueues(); if (queues != null && !queues.isEmpty()) { this.sender.getStatistics().incQueueSize(); } // fix bug 35730 // Send event to the event dispatcher GatewaySenderEventImpl senderEvent = (GatewaySenderEventImpl) event.getNewValue(); this.processor.handlePrimaryEvent(senderEvent); }
logger.debug("For bucket {} about to load events from the temp queue...", getId()); Set queues = this.getPartitionedRegion().getParallelGatewaySender().getQueues(); if (queues != null) { ConcurrentParallelGatewaySenderQueue prq =
private void createGatewaySender() { // Mock gateway sender this.sender = ParallelGatewaySenderHelper.createGatewaySender(this.cache); when(this.queueRegion.getParallelGatewaySender()).thenReturn(this.sender); when(this.sender.getQueues()).thenReturn(null); when(this.sender.getDispatcherThreads()).thenReturn(1); stats = new GatewaySenderStats(new DummyStatisticsFactory(), "ln"); when(this.sender.getStatistics()).thenReturn(stats); }
Set<RegionQueue> regionQueues = getQueues(); if (regionQueues != null) { for (RegionQueue regionQueue : regionQueues) {
@Override public void addGatewaySenderId(String gatewaySenderId) { super.addGatewaySenderId(gatewaySenderId); new UpdateAttributesProcessor(this).distribute(); ((PartitionedRegion) this).distributeUpdatedProfileOnSenderCreation(); GatewaySender sender = getCache().getGatewaySender(gatewaySenderId); if (sender != null && sender.isParallel() && sender.isRunning()) { AbstractGatewaySender senderImpl = (AbstractGatewaySender) sender; ((ConcurrentParallelGatewaySenderQueue) senderImpl.getQueues().toArray(new RegionQueue[1])[0]) .addShadowPartitionedRegionForUserPR(this); } }
@Override public void addAsyncEventQueueId(String asyncEventQueueId, boolean isInternal) { super.addAsyncEventQueueId(asyncEventQueueId, isInternal); new UpdateAttributesProcessor(this).distribute(); ((PartitionedRegion) this).distributeUpdatedProfileOnSenderCreation(); GatewaySender sender = getCache() .getGatewaySender(AsyncEventQueueImpl.getSenderIdFromAsyncEventQueueId(asyncEventQueueId)); if (sender != null && sender.isParallel() && sender.isRunning()) { AbstractGatewaySender senderImpl = (AbstractGatewaySender) sender; ((ConcurrentParallelGatewaySenderQueue) senderImpl.getQueues().toArray(new RegionQueue[1])[0]) .addShadowPartitionedRegionForUserPR(this); } }
((ConcurrentParallelGatewaySenderQueue) senderImpl.getQueues() .toArray(new RegionQueue[1])[0]).addShadowPartitionedRegionForUserPR(this);
final Set<RegionQueue> queues = ((AbstractGatewaySender) sender).getQueues();