EventID eventID = event.getEventId(); VersionTag tag = event.getVersionTag(); if (tag == null) { return; tag, event.getOperation()); RegionVersionVector versionVector = ((LocalRegion) event.getRegion()).getVersionVector(); canonicalizeIDs(tag, versionVector); bulkOpTracker.putVersionTag(eventID, event.getVersionTag()); retry = false;
private ClientUpdateMessageImpl constructClientMessage(InternalCacheEvent event) { ClientUpdateMessageImpl clientMessage = null; EnumListenerEvent operation = event.getEventType(); try { clientMessage = initializeMessage(operation, event); } catch (Exception e) { logger.fatal(String.format( "CacheClientNotifier: Cannot notify clients to perform operation %s on event %s", new Object[] {operation, event}), e); } return clientMessage; }
@Override protected void generateLocalFilterRouting(InternalCacheEvent event) { if (event.getLocalFilterInfo() == null) { super.generateLocalFilterRouting(event); } }
/** * @return true if the event should not be tracked, false otherwise */ private boolean ignoreEvent(InternalCacheEvent event, EventID eventID) { if (eventID == null) { return true; } else { boolean isVersioned = (event.getVersionTag() != null); boolean isClient = event.hasClientOrigin(); if (isVersioned && isClient) { return false; // version tags for client events are kept for retries by the client } boolean isEntry = event.getOperation().isEntry(); boolean isPr = event.getRegion().getAttributes().getDataPolicy().withPartitioning() || ((LocalRegion) event.getRegion()).isUsedForPartitionedRegionBucket(); return (!isClient && // ignore if it originated on a server, and isEntry && // it affects an entry and !isPr); // is not on a PR } }
private void removeDestroyTokensFromCqResultKeys(InternalCacheEvent event, FilterInfo filterInfo) { FilterProfile regionProfile = ((LocalRegion) event.getRegion()).getFilterProfile(); if (event.getOperation().isEntry() && filterInfo.getCQs() != null) { EntryEventImpl entryEvent = (EntryEventImpl) event; for (Map.Entry<Long, Integer> e : filterInfo.getCQs().entrySet()) { Long cqID = e.getKey(); String cqName = regionProfile.getRealCqID(cqID); if (cqName != null) { ServerCQ cq = regionProfile.getCq(cqName); if (cq != null && e.getValue().equals(Integer.valueOf(MessageType.LOCAL_DESTROY))) { cq.removeFromCqResultKeys(entryEvent.getKey(), true); } } } } }
return entry.event; LocalRegion region = (LocalRegion) this.event.getRegion(); null/* value */, this.event.getCallbackArgument(), false /* originRemote */, this.event.getDistributedMember(), this.event.isGenerateCallbacks(), entry.getEventID()); boolean returnedEv = false; try {
final boolean isTraceEnabled = logger.isTraceEnabled(); FilterInfo filterInfo = event.getLocalFilterInfo(); FilterProfile regionProfile = ((LocalRegion) event.getRegion()).getFilterProfile(); if (filterInfo != null) { logger.trace("Event isOriginRemote={}", event.isOriginRemote()); Set<Object> rawIDs = regionProfile.getRealClientIDs(filterInfo.getInterestedClientsInv()); Set<ClientProxyMembershipID> ids = getProxyIDs(rawIDs, true); if (ids.remove(event.getContext())) { // don't send to member of origin CacheClientProxy ccp = getClientProxy(event.getContext()); if (ccp != null) { ccp.getStatistics().incMessagesNotQueuedOriginator(); Set<Object> rawIDs = regionProfile.getRealClientIDs(filterInfo.getInterestedClients()); Set<ClientProxyMembershipID> ids = getProxyIDs(rawIDs, true); if (ids.remove(event.getContext())) { // don't send to member of origin CacheClientProxy ccp = getClientProxy(event.getContext()); if (ccp != null) { ccp.getStatistics().incMessagesNotQueuedOriginator();
RegionAttributes attr = this.event.getRegion().getAttributes(); if (attr.getConcurrencyChecksEnabled() && !attr.getDataPolicy().withReplication() && attr.getScope() != Scope.GLOBAL) { this.putAllData, this.putAllDataSize); if (success) { m.callbackArg = this.event.getCallbackArgument(); m.putAllData = new PutAllEntryData[0]; m.putAllDataSize = 0; m.skipCallbacks = !event.isGenerateCallbacks(); Arrays.toString(versioned)); m.callbackArg = this.event.getCallbackArgument(); m.putAllData = versioned; m.putAllDataSize = versioned.length; m.skipCallbacks = !event.isGenerateCallbacks(); return; m.callbackArg = this.event.getCallbackArgument(); m.putAllData = this.putAllData; m.putAllDataSize = this.putAllDataSize; m.skipCallbacks = !event.isGenerateCallbacks();
@Override protected CacheOperationMessage createMessage() { TombstoneMessage mssg = new TombstoneMessage(); // mssg.regionVersion = this.regionVersion; mssg.regionGCVersions = this.regionGCVersions; mssg.eventID = this.event.getEventId(); mssg.op = this.op; return mssg; }
boolean isEntryEvent = event.getOperation().isEntry(); EntryEventImpl entryEvent = isEntryEvent ? (EntryEventImpl) event : null; FilterInfo routing = event.getLocalFilterInfo(); routing = filterProfile.getLocalFilterRouting(event); event.setLocalFilterInfo(routing); if (routing != null && event.getOperation().isEntry() && ((EntryEventImpl) event).isConcurrencyConflict()) { if (logger.isDebugEnabled()) {
if (event.getOperation().isCreate()) { if (logger.isDebugEnabled()) { logger.debug("invoking listeners: {}", Arrays.toString(listeners)); if (!event.isGenerateCallbacks()) { return;
/** * Return true if this operation needs to check for reliable delivery. Return false if not. * Currently the only case it doesn't need to be is a DestroyRegionOperation doing a "local" * destroy. * * @since GemFire 5.0 */ boolean isOperationReliable() { Operation op = this.event.getOperation(); if (!op.isRegionDestroy()) { return true; } if (op.isDistributed()) { return true; } // must be a region destroy that is "local" which means // Region.localDestroyRegion or Region.close or Cache.clsoe // none of these should do reliability checks return false; }
EntryEventImpl entryEvent = event.getOperation().isEntry() ? getEvent() : null; this.event.setLocalFilterInfo(filterInfo); if (r.isUsedForPartitionedRegionBucket() && event.getOperation().isEntry()) { PartitionMessage pm = ((EntryEventImpl) event).getPartitionMessage(); if (pm != null && pm.getSender() != null event.setLocalFilterInfo(filterInfo);
protected DistributedRegion getRegion() { return (DistributedRegion) this.event.getRegion(); }
@Override protected CacheOperationMessage createMessage() { if (this.event.hasClientOrigin()) { DestroyWithContextMessage msgwithContxt = new DestroyWithContextMessage(event); msgwithContxt.context = ((EntryEventImpl) this.event).getContext(); return msgwithContxt; } else { return new DestroyMessage(event); } }
@Override public void setValueWithTombstoneCheck(@Unretained Object v, EntryEvent e) throws RegionClearedException { if (v == Token.TOMBSTONE) { makeTombstone((InternalRegion) e.getRegion(), ((InternalCacheEvent) e).getVersionTag()); } else { setValue((RegionEntryContext) e.getRegion(), v, (EntryEventImpl) e); } }
return entry.event; LocalRegion region = (LocalRegion) this.event.getRegion(); @Retained EntryEventImpl ev = EntryEventImpl.create(region, entry.getOp(), entry.getKey(), null/* value */, this.event.getCallbackArgument(), false /* originRemote */, this.event.getDistributedMember(), this.event.isGenerateCallbacks(), entry.getEventID()); boolean returnedEv = false; try {
RegionAttributes attr = this.event.getRegion().getAttributes(); if (attr.getConcurrencyChecksEnabled() && !attr.getDataPolicy().withReplication() && attr.getScope() != Scope.GLOBAL) { this.removeAllData, this.removeAllDataSize); if (success) { m.callbackArg = this.event.getCallbackArgument(); m.removeAllData = new RemoveAllEntryData[0]; m.removeAllDataSize = 0; m.skipCallbacks = !event.isGenerateCallbacks(); Arrays.toString(versioned)); m.callbackArg = this.event.getCallbackArgument(); m.removeAllData = versioned; m.removeAllDataSize = versioned.length; m.skipCallbacks = !event.isGenerateCallbacks(); return; m.callbackArg = this.event.getCallbackArgument(); m.removeAllData = this.removeAllData; m.removeAllDataSize = this.removeAllDataSize; m.skipCallbacks = !event.isGenerateCallbacks();
@Override public boolean hasSeenEvent(InternalCacheEvent event) { EventID eventID = event.getEventId(); if (ignoreEvent(event, eventID)) { return false; // not tracked } return hasSeenEvent(eventID, event); }
/** * generate version tag if it does not exist and set it into the event. */ @Override public void generateAndSetVersionTag(InternalCacheEvent event, RegionEntry entry) { if (entry != null && event.getOperation().isEntry()) { EntryEventImpl entryEvent = (EntryEventImpl) event; if (!entryEvent.isOriginRemote() && shouldGenerateVersionTag(entry, entryEvent)) { boolean eventHasDelta = getSystem().getConfig().getDeltaPropagation() && !this.scope.isDistributedNoAck() && entryEvent.getDeltaBytes() != null; VersionTag v = entry.generateVersionTag(null, eventHasDelta, this, entryEvent); if (logger.isDebugEnabled() && v != null) { logger.debug("generated version tag {} for {}", v, entryEvent.getKey()); } } } }