/** * Logs a batch of events. * * @param events The batch of events to log **/ public void logBatchFine(String message, List<GatewaySenderEventImpl> events) { if (events != null) { StringBuffer buffer = new StringBuffer(); buffer.append(message); buffer.append(events.size()).append(" events"); buffer.append(" (batch #" + getBatchId()); buffer.append("):\n"); for (GatewaySenderEventImpl ge : events) { buffer.append("\tEvent ").append(ge.getEventId()).append(":"); buffer.append(ge.getKey()).append("->"); // TODO:wan70 remove old code buffer.append(ge.getValueAsString(true)).append(","); buffer.append(ge.getShadowKey()); buffer.append("\n"); } logger.debug(buffer); } }
protected GatewaySenderEventImpl makeCopy() { return new GatewaySenderEventImpl(this); }
@Override public synchronized boolean processEvents(List<AsyncEvent> events) { for (AsyncEvent event : events) { GatewaySenderEventImpl gatewayEvent = (GatewaySenderEventImpl) event; int bucketId = gatewayEvent.getBucketId(); List<GatewaySenderEventImpl> bucketEvents = bucketToEventsMap.get(bucketId); if (bucketEvents == null) { bucketEvents = new ArrayList<>(); bucketEvents.add(gatewayEvent); bucketToEventsMap.put(bucketId, bucketEvents); } else { bucketEvents.add(gatewayEvent); } } return true; }
@Override public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("GatewaySenderEventImpl[").append("id=").append(this.id).append(";action=") .append(this.action).append(";operation=").append(getOperation()).append(";region=") .append(this.regionPath).append(";key=").append(this.key).append(";value=") .append(getValueAsString(true)).append(";valueIsObject=").append(this.valueIsObject) .append(";numberOfParts=").append(this.numberOfParts).append(";callbackArgument=") .append(this.callbackArgument).append(";possibleDuplicate=").append(this.possibleDuplicate) .append(";creationTime=").append(this.creationTime).append(";shadowKey=") .append(this.shadowKey).append(";timeStamp=").append(this.versionTimeStamp) .append(";acked=").append(this.isAcked).append(";dispatched=").append(this.isDispatched) .append(";bucketId=").append(this.bucketId).append(";isConcurrencyConflict=") .append(this.isConcurrencyConflict).append("]"); return buffer.toString(); }
public void toDataPre_GEODE_1_9_0_0(DataOutput out) throws IOException { // Make sure we are initialized before we serialize. initialize(); out.writeShort(VERSION); out.writeInt(this.action); out.writeInt(this.numberOfParts); // out.writeUTF(this._id); DataSerializer.writeObject(this.id, out); DataSerializer.writeString(this.regionPath, out); out.writeByte(this.valueIsObject); serializeKey(out); DataSerializer.writeByteArray(getSerializedValue(), out); DataSerializer.writeObject(this.callbackArgument, out); out.writeBoolean(this.possibleDuplicate); out.writeLong(this.creationTime); out.writeInt(this.bucketId); out.writeLong(this.shadowKey); out.writeLong(getVersionTimeStamp()); }
GatewaySenderEventImpl event = (GatewaySenderEventImpl) i.next(); int action = event.getAction(); getMessage().addIntPart(action); byte posDupByte = (byte) (event.getPossibleDuplicate() ? 0x01 : 0x00); getMessage().addBytesPart(new byte[] {posDupByte}); String regionName = event.getRegionPath(); EventID eventId = event.getEventId(); Object key = event.getKey(); Object callbackArg = event.getSenderCallbackArgument(); byte[] value = event.getSerializedValue(); byte valueIsObject = event.getValueIsObject();; getMessage().addObjPart(callbackArg); getMessage().addLongPart(event.getVersionTimeStamp());
int bucketId = -1; Object key = null; if (event.getRegion() != null) { if (isDREvent(event)) { prQ = this.userRegionNameToshadowPRMap.get(event.getRegion().getFullPath()); bucketId = event.getEventId().getBucketID(); key = event.getEventId(); } else { prQ = this.userRegionNameToshadowPRMap.get(ColocationHelper .getLeaderRegion((PartitionedRegion) event.getRegion()).getFullPath()); bucketId = event.getBucketId(); key = event.getShadowKey(); String regionPath = event.getRegionPath(); InternalCache cache = this.sender.getCache(); Region region = (PartitionedRegion) cache.getRegion(regionPath); event.getBucketId(); key = event.getEventId(); } else { prQ = this.userRegionNameToshadowPRMap .get(ColocationHelper.getLeaderRegion((PartitionedRegion) region).getFullPath()); event.getBucketId(); key = event.getShadowKey(); event.release(); } catch (IllegalStateException e) { logger.error("Exception caught and logged. The thread will continue running", e);
return; EventWrapper ew = this.unprocessedEvents.remove(gatewayEvent.getEventId()); sender.getId(), gatewayEvent.getEventId(), gatewayEvent.getKey(), gatewayEvent.getValueAsString(true)); Long oldv = this.unprocessedTokens.put(gatewayEvent.getEventId(), mapValue); if (oldv == null) { statistics.incUnprocessedTokensAddedByPrimary(); logger.trace( "{}: Primary create/update event {}:{}->{} remove from unprocessed events map", sender.getId(), gatewayEvent.getEventId(), gatewayEvent.getKey(), gatewayEvent.getValueAsString(true)); ew.event.release(); statistics.incUnprocessedEventsRemovedByPrimary();
if (o != null && o instanceof GatewaySenderEventImpl) { GatewaySenderEventImpl ge = (GatewaySenderEventImpl) o; EventWrapper unprocessedEvent = this.unprocessedEvents.remove(ge.getEventId()); if (unprocessedEvent != null) { unprocessedEvent.event.release(); if (this.unprocessedEvents.isEmpty()) { break; gatewayEvent.initialize(); GatewaySenderEventCallbackArgument seca = gatewayEvent.getSenderCallbackArgument(); if (seca.getOriginatingDSId() == GatewaySender.DEFAULT_DISTRIBUTED_SYSTEM_ID) { seca.setOriginatingDSId(sender.getMyDSId()); gatewayEvent.release(); if (o != null && o instanceof GatewaySenderEventImpl) { GatewaySenderEventImpl ge = (GatewaySenderEventImpl) o; ge.setPossibleDuplicate(true);
assertThat(gsei1.getOperation()).isEqualTo(Operation.CREATE); GatewaySenderEventImpl gsei2 = conflatedEvents.get(1); assertThat(gsei2.getOperation()).isEqualTo(Operation.UPDATE); GatewaySenderEventImpl gsei3 = conflatedEvents.get(2); assertThat(gsei3.getOperation()).isEqualTo(Operation.DESTROY); assertThat(gsei2.getDeserializedValue()).isEqualTo(lastUpdateValue); assertThat(gsei2.getEventId().getSequenceID()).isEqualTo(lastUpdateSequenceId); assertThat(gsei2.getShadowKey()).isEqualTo(lastUpdateShadowKey);
if (o != null && o instanceof GatewaySenderEventImpl) { GatewaySenderEventImpl ge = (GatewaySenderEventImpl) o; if (ge.getCreationTime() + this.sender.getAlertThreshold() < currentTime) { logger.warn( "{} event for region={} key={} value={} was in the queue for {} milliseconds", new Object[] {ge.getOperation(), ge.getRegionPath(), ge.getKey(), ge.getValueAsString(true), currentTime - ge.getCreationTime()}); statistics.incEventsExceedingAlertThreshold();
for (GatewaySenderEventImpl gsEvent : events) { if (gsEvent.shouldBeConflated()) { ConflationKey key = new ConflationKey(gsEvent.getRegion().getFullPath(), gsEvent.getKeyToConflate(), gsEvent.getOperation()); ConflationKey key = new ConflationKey(gsEvent.getRegion().getFullPath(), gsEvent.getKeyToConflate(), gsEvent.getOperation(), gsEvent.getShadowKey()); conflatedEventsMap.put(key, gsEvent);
boolean isDREvent = isDREvent(value); Region region = value.getRegion(); String regionPath = null; if (isDREvent) { int bucketId = value.getBucketId(); Object key = null; if (!isDREvent) { key = value.getShadowKey(); key = value.getEventId();
for (Iterator<GatewaySenderEventImpl> i = filteredList.iterator(); i.hasNext();) { GatewaySenderEventImpl event = i.next(); if (event.isSerializedValueNotAvailable()) { i.remove(); while (cmeItr.hasNext()) { GatewaySenderEventImpl event = cmeItr.next(); if (event.isConcurrencyConflict()) { cmeItr.remove(); logger.debug("The CME event: {} is removed from Gateway Sender queue: {}", event, if (this.getQueue() instanceof ConcurrentParallelGatewaySenderQueue) { qpr = ((ConcurrentParallelGatewaySenderQueue) this.getQueue()) .getRegion(event.getRegionPath()); } else { qpr = ((ParallelGatewaySenderQueue) this.getQueue()) .getRegion(event.getRegionPath()); int bucketId = event.getBucketId(); BucketRegion bucket = qpr.getDataStore().getLocalBucketById(bucketId); if (bucket == null || !bucket.getBucketAdvisor().isPrimary()) { event.setPossibleDuplicate(true); if (isDebugEnabled) { logger.debug(
.hasNext();) { GatewaySenderEventImpl event = iterator.next(); final int bucketId = event.getBucketId(); final PartitionedRegion region = (PartitionedRegion) event.getRegion(); if (!region.getRegionAdvisor().isPrimaryForBucket(bucketId)) { iterator.remove(); BucketRegionQueue brq = getBucketRegionQueueByBucketId(getRandomShadowPR(), bucketId); if (brq != null) { brq.pushKeyIntoQueue(event.getShadowKey());
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 GatewaySenderEventImpl createGatewaySenderEvent(LocalRegion lr, Operation operation, Object key, Object value, long sequenceId, long shadowKey) throws Exception { when(lr.getKeyInfo(key, value, null)).thenReturn(new KeyInfo(key, null, null)); EntryEventImpl eei = EntryEventImpl.create(lr, operation, key, value, null, false, null); eei.setEventId(new EventID(new byte[16], 1l, sequenceId)); GatewaySenderEventImpl gsei = new GatewaySenderEventImpl(getEnumListenerEvent(operation), eei, null); gsei.setShadowKey(shadowKey); return gsei; }
if (!(isUpdateVersionStamp || isCME_And_NotOriginRemote)) { senderEvent = new GatewaySenderEventImpl(operation, event, substituteValue, false); handleSecondaryEvent(senderEvent); senderEvent = new GatewaySenderEventImpl(operation, event, substituteValue); // OFFHEAP ok GatewaySenderEventImpl.release(senderEvent);
@Override public void run() { basicHandlePrimaryDestroy(gatewayEvent.getEventId()); } });
public int getSerializedValueSize() { int localSerializedValueSize = this.serializedValueSize; if (localSerializedValueSize != DEFAULT_SERIALIZED_VALUE_SIZE) { return localSerializedValueSize; } @Unretained(OffHeapIdentifier.GATEWAY_SENDER_EVENT_IMPL_VALUE) Object vo = this.valueObj; if (vo instanceof StoredObject) { localSerializedValueSize = ((StoredObject) vo).getSizeInBytes(); } else { if (this.substituteValue != null) { localSerializedValueSize = sizeOf(this.substituteValue); } else { localSerializedValueSize = CachedDeserializableFactory.calcMemSize(getSerializedValue()); } } this.serializedValueSize = localSerializedValueSize; return localSerializedValueSize; }