/** * @return false if value 'v' indicates that entry does not exist */ public boolean setOldValue(Object v) { return setOldValue(v, false); }
/** * Insert this message's oldValue into the given event. This fixes * bug 38382 by propagating old values with Entry level * CacheOperationMessages during initial image transfer * @since 5.5 */ public void setOldValueInEvent(EntryEventImpl event) { if (CqService.isRunning()/* || event.getOperation().guaranteesOldValue()*/) { event.setOldValueForQueryProcessing(); if (!event.hasOldValue() && this.hasOldValue) { if (this.oldValueIsObject == VALUE_IS_SERIALIZED_OBJECT) { event.setSerializedOldValue((byte[])this.oldValue); } else { event.setOldValue(this.oldValue); } } } }
/** * @return false if value 'v' indicates that entry does not exist */ public final boolean setOldValue(Object v) { return setOldValue(v, false); }
/** * Insert this message's oldValue into the given event. This fixes * bug 38382 by propagating old values with Entry level * CacheOperationMessages during initial image transfer * @since 5.5 */ public void setOldValueInEvent(EntryEventImpl event) { CqService cqService = event.getRegion().getCache().getCqService(); if (cqService.isRunning()/* || event.getOperation().guaranteesOldValue()*/) { event.setOldValueForQueryProcessing(); if (!event.hasOldValue() && this.hasOldValue) { if (this.oldValueIsSerialized) { event.setSerializedOldValue((byte[])this.oldValue); } else { event.setOldValue(this.oldValue); } } } }
/** * TODO: currently this method does not force for null/INVALID value? * Use the overloaded 3-arg method with "forceIfNull" arg to force * null value. * * @param force true if the old value should be forcibly set, used * for HARegions, methods like putIfAbsent, etc., * where the old value must be available. * @return false if value 'v' indicates that entry does not exist */ public final boolean setOldValue(Object v, boolean force) { // TODO: [sumedh] why does this not force for null/INVALID?? currently // splitting out to a new method but this should really be fixed for all // code paths and addditional forceIfNull argument removed return setOldValue(v, force, false); }
public final boolean waitForRemoteResult( final RemotePutMessage.RemotePutResponse response, final Set<InternalDistributedMember> recipients, final EntryEventImpl event, final LocalRegion r, PartitionedRegion pr, int flags) throws CacheException, RemoteOperationException { final RemotePutMessage.PutResult result = response.waitForResult(); event.setOldValue(result.oldValue, true/*force*/); return result.returnValue; }
public Object apply(EntryEvent ev) { if (ev != null && ev instanceof EntryEventImpl) { EntryEventImpl putEvent = (EntryEventImpl)ev; int last = this.listOfDeltas.size() -1; for (int i = this.deltaAppliedIndex; i < listOfDeltas.size(); i++) { Object o = listOfDeltas.get(i).apply(putEvent); if(i < last) { putEvent.setOldValue(o); }else { putEvent.setNewValue(o); } } return putEvent.getNewValue(); } else { throw new InternalGemFireException( "ListOfDeltas.apply: putEvent is either null " + "or is not of type EntryEventImpl"); } }
event.setOldValue(oldValue);
/** @return false if entry doesn't exist */ public final boolean setOldValueFromRegion() { try { RegionEntry re = this.region.getRegionEntry(getKey()); if (re == null) return false; SimpleMemoryAllocatorImpl.skipRefCountTracking(); Object v = re._getValueRetain(this.region, true); SimpleMemoryAllocatorImpl.unskipRefCountTracking(); try { return setOldValue(v); } finally { OffHeapHelper.releaseWithNoTracking(v); } } catch (EntryNotFoundException ex) { return false; } }
/** @return false if entry doesn't exist */ public boolean setOldValueFromRegion() { try { RegionEntry re = this.region.getRegionEntry(getKey()); if (re == null) return false; ReferenceCountHelper.skipRefCountTracking(); Object v = re._getValueRetain(this.region, true); ReferenceCountHelper.unskipRefCountTracking(); try { return setOldValue(v); } finally { OffHeapHelper.releaseWithNoTracking(v); } } catch (EntryNotFoundException ex) { return false; } }
private EntryEventImpl createEvent(LocalRegion r, Operation op, RegionEntry re, Object key, Object newValue,Object aCallbackArgument) { DistributedMember originator = ((TXId)this.txId).getMemberId(); //TODO:ASIF :EventID will not be generated with this constructor . Check if // this is correct LocalRegion eventRegion = r; if (r.isUsedForPartitionedRegionBucket()) { eventRegion = r.getPartitionedRegion(); } EntryEventImpl event = EntryEventImpl.create( eventRegion, op, key, newValue, aCallbackArgument, // callbackArg true, // originRemote originator); event.setOldValue(re.getValueInVM(r)); // OFFHEAP: copy into heap cd event.setTransactionId(getTransactionId()); return event; }
return ((Boolean)result).booleanValue(); } else { // replace(K,V) event.setOldValue(result); event.setOldValue(result); if (result != null) { return false;
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; }
ReferenceCountHelper.unskipRefCountTracking(); try { event.setOldValue(oldValueInVMOrDisk, requireOldValue || GemFireCacheImpl.sqlfSystem()); } finally { event.setOldValue(oldValueInVM, requireOldValue || GemFireCacheImpl.sqlfSystem()); } finally { event.setOldValue(ov, true);
event.setOldValue(oldValueInVMOrDisk, requireOldValue || GemFireCacheImpl.gfxdSystem()); } finally { event.setOldValue(oldValueInVM, requireOldValue || GemFireCacheImpl.gfxdSystem()); } finally { event.setOldValue(ov, true);
/** 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; }
protected final boolean waitForRemotePut( final PutMessage.PutResponse response, final Object recipients, final EntryEventImpl event, boolean requireOldValue) throws PrimaryBucketException, ForceReattemptException { try { final PutResult pr = response.waitForResult(); // if (logger.fineEnabled()) { // logger.fine("return operation for put is " + pr.op); // } event.setOperation(pr.op); event.setVersionTag(pr.versionTag); if (requireOldValue) { event.setOldValue(pr.oldValue, true); } return pr.returnValue; } catch (RegionDestroyedException rde) { if (logger.fineEnabled()) { logger.fine("putRemotely: caught RegionDestroyedException", rde); } throw new RegionDestroyedException(toString(), getFullPath()); } catch (TransactionException te) { throw te; } catch (CacheException ce) { // Fix for bug 36014 throw new PartitionedRegionDistributionException( LocalizedStrings.PartitionedRegion_PUTTING_ENTRY_ON_0_FAILED .toLocalizedString(recipients), ce); } }
public boolean putEntry(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) { boolean retVal = false; final LocalRegion r = event.getLocalRegion(); try { RemotePutResponse response = RemotePutMessage.txSend(state.getTarget(),r,event,lastModified,ifNew,ifOld,expectedOldValue,requireOldValue); PutResult result = response.waitForResult(); event.setOldValue(result.oldValue, true/*force*/); retVal = result.returnValue; }catch (TransactionDataNotColocatedException enfe) { throw enfe; } catch (CacheException ce) { throw new PartitionedRegionException(LocalizedStrings.PartitionedRegion_DESTROY_OF_ENTRY_ON_0_FAILED.toLocalizedString(state.getTarget()), ce); } catch (RegionDestroyedException rde) { throw new TransactionDataNotColocatedException(LocalizedStrings.RemoteMessage_REGION_0_NOT_COLOCATED_WITH_TRANSACTION .toLocalizedString(rde.getRegionFullPath()), rde); } catch(RemoteOperationException roe) { throw new TransactionDataNodeHasDepartedException(roe); } return retVal; }
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(); } }
try { ev.setOldValue(dataItem.getOldValue()); if (bridgeContext != null) { ev.setContext(bridgeContext);