EventID eventID = event.getEventId(); VersionTag tag = event.getVersionTag(); if (tag == null) { return; bulkOpTracker.putVersionTag(eventID, event.getVersionTag()); retry = false;
@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 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 } }
@Override public void recordEvent(InternalCacheEvent event) { EventID eventID = event.getEventId(); if (ignoreEvent(event, eventID)) { return; // not tracked } LocalRegion lr = (LocalRegion) event.getRegion(); ThreadIdentifier membershipID = createThreadIDFromEvent(eventID); VersionTag tag = null; if (lr.getServerProxy() == null) { tag = event.getVersionTag(); RegionVersionVector v = ((LocalRegion) event.getRegion()).getVersionVector(); canonicalizeIDs(tag, v); } EventSequenceNumberHolder newEvh = new EventSequenceNumberHolder(eventID.getSequenceID(), tag); if (logger.isTraceEnabled()) { logger.trace("region event tracker recording {}", event); } recordSequenceNumber(membershipID, newEvh); // If this is a bulkOp, and concurrency checks are enabled, we need to // save the version tag in case we retry. // Make recordBulkOp version tag after recordSequenceNumber, so that recordBulkOpStart // in a retry bulk op would not incorrectly remove the saved version tag in // recordedBulkOpVersionTags if (lr.getConcurrencyChecksEnabled() && (event.getOperation().isPutAll() || event.getOperation().isRemoveAll()) && lr.getServerProxy() == null) { recordBulkOpEvent(event, membershipID); } }