public void invalidateOnRemote(EntryEventImpl event, boolean invokeCallbacks, boolean forceNewEntry) throws DataLocationException { event.setOriginRemote(true); invalidateExistingEntry(event, invokeCallbacks, forceNewEntry); }
public boolean putEntryOnRemote(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) throws DataLocationException { /* * Need to flip OriginRemote to true because it is certain that this came from a remote TxStub */ event.setOriginRemote(true); return txPutEntry(event, ifNew, requireOldValue, true, expectedOldValue); }
public void destroyOnRemote(EntryEventImpl event, boolean cacheWrite, Object expectedOldValue) throws DataLocationException { event.setOriginRemote(true); destroyExistingEntry(event, cacheWrite, expectedOldValue); }
@Retained protected EntryEventImpl(LocalRegion region, Operation op, Object key, boolean originRemote, DistributedMember distributedMember, boolean generateCallbacks, boolean fromRILocalDestroy) { super(key, null, null); this.region = region; this.op = op; setOriginRemote(originRemote); setGenerateCallbacks(generateCallbacks); this.distributedMember = distributedMember; setFromRILocalDestroy(fromRILocalDestroy); }
@Retained protected EntryEventImpl(LocalRegion region, Operation op, Object key, boolean originRemote, DistributedMember distributedMember, boolean generateCallbacks, boolean fromRILocalDestroy) { this.region = region; this.op = op; this.keyInfo = this.region.getKeyInfo(key); setOriginRemote(originRemote); setGenerateCallbacks(generateCallbacks); this.distributedMember = distributedMember; setFromRILocalDestroy(fromRILocalDestroy); }
/** * Switch the event's region from BucketRegion to owning PR and set originRemote to the given value */ static EntryEventImpl switchEventOwnerAndOriginRemote(EntryEventImpl event, boolean originRemote) { assert event != null; if (event.getRegion().isUsedForPartitionedRegionBucket()) { LocalRegion pr = event.getRegion().getPartitionedRegion(); event.setRegion(pr); } event.setOriginRemote(originRemote); return event; }
/** * Switch the event's region from BucketRegion to owning PR and set originRemote to the given value */ static EntryEventImpl switchEventOwnerAndOriginRemote(EntryEventImpl event, boolean originRemote) { assert event != null; if (event.getRegion().isUsedForPartitionedRegionBucket()) { LocalRegion pr = event.getRegion().getPartitionedRegion(); event.setRegion(pr); } event.setOriginRemote(originRemote); return event; }
@Override protected void cacheWriteBeforePut(EntryEventImpl event, Set netWriteRecipients, CacheWriter localWriter, boolean requireOldValue, Object expectedOldValue) throws CacheWriterException, TimeoutException { boolean origRemoteState = false; try { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { origRemoteState=event.isOriginRemote(); event.setOriginRemote(true); } event.setRegion(this.partitionedRegion); this.partitionedRegion.cacheWriteBeforePut(event, netWriteRecipients, localWriter, requireOldValue, expectedOldValue); } finally { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { event.setOriginRemote(origRemoteState); } event.setRegion(this); } }
/** * Doesn't specify oldValue as this will be filled in later as part of an * operation on the region, or lets it default to null. */ @Retained protected EntryEventImpl( final LocalRegion region, Operation op, Object key, @Retained(ENTRY_EVENT_NEW_VALUE) Object newVal, Object callbackArgument, boolean originRemote, DistributedMember distributedMember, boolean generateCallbacks, boolean initializeId) { super(key, null, callbackArgument); this.region = region; this.op = op; setNewValueForTX(newVal); setOriginRemote(originRemote); setGenerateCallbacks(generateCallbacks); this.distributedMember = distributedMember; }
@Override boolean cacheWriteBeforeDestroy(EntryEventImpl event, Object expectedOldValue) throws CacheWriterException, EntryNotFoundException, TimeoutException { boolean origRemoteState = false; boolean ret = false; try { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { origRemoteState=event.isOriginRemote(); event.setOriginRemote(true); } event.setRegion(this.partitionedRegion); ret = this.partitionedRegion.cacheWriteBeforeDestroy(event, expectedOldValue); } finally { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { event.setOriginRemote(origRemoteState); } event.setRegion(this); } return ret; // return super.cacheWriteBeforeDestroy(event); }
@Override protected void cacheWriteBeforePut(EntryEventImpl event, Set netWriteRecipients, CacheWriter localWriter, boolean requireOldValue, Object expectedOldValue) throws CacheWriterException, TimeoutException { boolean origRemoteState = false; try { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { origRemoteState=event.isOriginRemote(); event.setOriginRemote(true); } event.setRegion(this.partitionedRegion); this.partitionedRegion.cacheWriteBeforePut(event, netWriteRecipients, localWriter, requireOldValue, expectedOldValue); } finally { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { event.setOriginRemote(origRemoteState); } event.setRegion(this); } }
@Override boolean cacheWriteBeforeDestroy(EntryEventImpl event, Object expectedOldValue) throws CacheWriterException, EntryNotFoundException, TimeoutException { boolean origRemoteState = false; boolean ret = false; try { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { origRemoteState=event.isOriginRemote(); event.setOriginRemote(true); } event.setRegion(this.partitionedRegion); ret = this.partitionedRegion.cacheWriteBeforeDestroy(event, expectedOldValue); } finally { if (event.getPartitionMessage() != null || event.hasClientOrigin()) { event.setOriginRemote(origRemoteState); } event.setRegion(this); } return ret; // return super.cacheWriteBeforeDestroy(event); }
EntryEvent getEvent(LocalRegion r, Object key, TXState txs) { // dumpOp(); //TODO:ASIF : Shopuld we generate EventID ? At this point not generating LocalRegion eventRegion = r; if (r.isUsedForPartitionedRegionBucket()) { eventRegion = r.getPartitionedRegion(); } EntryEventImpl result = new TxEntryEventImpl(eventRegion, key); // OFFHEAP: freeOffHeapResources on this event is called from TXEvent.freeOffHeapResources. boolean returnedResult = false; try { if (this.destroy == DESTROY_NONE || isOpDestroy()) { result.setOldValue(getOriginalValue()); } if(txs.isOriginRemoteForEvents()) { result.setOriginRemote(true); } else { result.setOriginRemote(false); } result.setTransactionId(txs.getTransactionId()); returnedResult = true; return result; } finally { if (!returnedResult) result.release(); } }
EntryEventImpl createEventForPR(EntryEventImpl sourceEvent) { EntryEventImpl e2 = new EntryEventImpl(sourceEvent); boolean returned = false; try { e2.setRegion(this.partitionedRegion); if (FORCE_LOCAL_LISTENERS_INVOCATION) { e2.setInvokePRCallbacks(true); } else { e2.setInvokePRCallbacks(sourceEvent.getInvokePRCallbacks()); } DistributedMember dm = this.getDistributionManager().getDistributionManagerId(); e2.setOriginRemote(!e2.getDistributedMember().equals(dm)); returned = true; return e2; } finally { if (!returned) { e2.release(); } } }
EntryEventImpl createEventForPR(EntryEventImpl sourceEvent) { EntryEventImpl e2 = new EntryEventImpl(sourceEvent); boolean returned = false; try { e2.setRegion(this.partitionedRegion); if (FORCE_LOCAL_LISTENERS_INVOCATION) { e2.setInvokePRCallbacks(true); } else { e2.setInvokePRCallbacks(sourceEvent.getInvokePRCallbacks()); } DistributedMember dm = this.getDistributionManager().getDistributionManagerId(); e2.setOriginRemote(!e2.getDistributedMember().equals(dm)); returned = true; return e2; } finally { if (!returned) { e2.release(); } } }
protected final EntryEventImpl getEvent(final TXState txs, final boolean isCohort, final InternalDistributedMember myId) { // dumpOp(); //TODO:ASIF : Should we generate EventID ? At this point not generating final LocalRegion eventRegion = getBaseRegion(); final EntryEventImpl result = EntryEventImpl.create(eventRegion, getNearSideOperation(), this.regionKey, getNearSidePendingValue(), getCallbackArgument(), false, myId); // OFFHEAP: freeOffHeapResources on this event is called from TXEvent.freeOffHeapResources. if (this.destroy == DESTROY_NONE || isOpDestroy()) { result.setOldValue(this.originalVersionId); } // Use coordinator to determine if the originRemote flag should be set. // The event can come to coordinator from itself in nested function // execution so this flag is more reliable -- see bug #41498. result.setOriginRemote(isCohort); result.setTXState(txs); return result; }
/** create a new EntryEvent to be used in notifying listeners, bridge servers, etc. */ EntryEventImpl createListenerEvent(EntryEventImpl sourceEvent, PartitionedRegion r, InternalDistributedMember member) { final EntryEventImpl e2; if (this.notificationOnly && this.bridgeContext == null) { e2 = sourceEvent; } else { e2 = new EntryEventImpl(sourceEvent); if (this.bridgeContext != null) { e2.setContext(this.bridgeContext); } } e2.setRegion(r); e2.setOriginRemote(true); e2.setInvokePRCallbacks(!notificationOnly); if (this.filterInfo != null) { e2.setLocalFilterInfo(this.filterInfo.getFilterInfo(member)); } if (this.versionTag != null) { this.versionTag.replaceNullIDs(getSender()); e2.setVersionTag(this.versionTag); } return e2; }
/** create a new EntryEvent to be used in notifying listeners, bridge servers, etc. */ EntryEventImpl createListenerEvent(EntryEventImpl sourceEvent, PartitionedRegion r, InternalDistributedMember member) { final EntryEventImpl e2; if (this.notificationOnly && this.bridgeContext == null) { e2 = sourceEvent; } else { e2 = new EntryEventImpl(sourceEvent); if (this.bridgeContext != null) { e2.setContext(this.bridgeContext); } } e2.setRegion(r); e2.setOldValue(this.expectedOldValue); e2.setOriginRemote(true); e2.setInvokePRCallbacks(!notificationOnly); if (this.filterInfo != null) { e2.setLocalFilterInfo(this.filterInfo.getFilterInfo(member)); } if (this.versionTag != null) { this.versionTag.replaceNullIDs(getSender()); e2.setVersionTag(this.versionTag); } return e2; }
/** create a new EntryEvent to be used in notifying listeners, bridge servers, etc. */ EntryEventImpl createListenerEvent(EntryEventImpl sourceEvent, PartitionedRegion r, InternalDistributedMember member) { final EntryEventImpl e2; if (this.notificationOnly && this.bridgeContext == null) { e2 = sourceEvent; } else { e2 = new EntryEventImpl(sourceEvent); if (this.bridgeContext != null) { e2.setContext(this.bridgeContext); } } e2.setRegion(r); e2.setOriginRemote(true); e2.setInvokePRCallbacks(!notificationOnly); if(!sourceEvent.hasOldValue()) { e2.oldValueNotAvailable(); } if (this.filterInfo != null) { e2.setLocalFilterInfo(this.filterInfo.getFilterInfo(member)); } if (this.versionTag != null) { this.versionTag.replaceNullIDs(getSender()); e2.setVersionTag(this.versionTag); } return e2; }
/** create a new EntryEvent to be used in notifying listeners, bridge servers, etc. */ EntryEventImpl createListenerEvent(EntryEventImpl sourceEvent, PartitionedRegion r, InternalDistributedMember member) { final EntryEventImpl e2; if (this.notificationOnly && this.bridgeContext == null) { e2 = sourceEvent; } else { e2 = new EntryEventImpl(sourceEvent); if (this.bridgeContext != null) { e2.setContext(this.bridgeContext); } } e2.setRegion(r); e2.setOriginRemote(true); e2.setInvokePRCallbacks(!notificationOnly); if(!sourceEvent.hasOldValue()) { e2.oldValueNotAvailable(); } if (this.filterInfo != null) { e2.setLocalFilterInfo(this.filterInfo.getFilterInfo(member)); } if (this.versionTag != null) { this.versionTag.replaceNullIDs(getSender()); e2.setVersionTag(this.versionTag); } return e2; }