public void destroyExistingEntry(EntryEventImpl event, boolean cacheWrite, Object expectedOldValue) throws EntryNotFoundException { try { this.operationCount++; getRealDeal(event.getKeyInfo(), event.getLocalRegion()).destroyExistingEntry(event, cacheWrite, expectedOldValue); trackBucketForTx(event.getKeyInfo()); } catch (TransactionDataRebalancedException | PrimaryBucketException re) { throw getTransactionException(event.getKeyInfo(), re); } }
public boolean txPutEntry(EntryEventImpl event, boolean ifNew, boolean requireOldValue, boolean checkResources, Object expectedOldValue) { try { this.operationCount++; boolean retVal = getRealDeal(event.getKeyInfo(), (LocalRegion)event.getRegion()).txPutEntry(event, ifNew, requireOldValue, checkResources, expectedOldValue); trackBucketForTx(event.getKeyInfo()); return retVal; } catch (TransactionDataRebalancedException | PrimaryBucketException re) { throw getTransactionException(event.getKeyInfo(), re); } }
public void invalidateExistingEntry(EntryEventImpl event, boolean invokeCallbacks, boolean forceNewEntry) { try { this.operationCount++; getRealDeal(event.getKeyInfo(), event.getLocalRegion()).invalidateExistingEntry(event, invokeCallbacks, forceNewEntry); trackBucketForTx(event.getKeyInfo()); } catch (TransactionDataRebalancedException | PrimaryBucketException re) { throw getTransactionException(event.getKeyInfo(), re); } }
public boolean putEntry(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) { try { this.operationCount++; boolean retVal = getRealDeal(event.getKeyInfo(), event.getLocalRegion()).putEntry(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, overwriteDestroyed); trackBucketForTx(event.getKeyInfo()); return retVal; } catch (TransactionDataRebalancedException | PrimaryBucketException re) { throw getTransactionException(event.getKeyInfo(), re); } }
public boolean putEntryOnRemote(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) throws DataLocationException { this.operationCount++; TXStateInterface tx = getRealDeal(event.getKeyInfo(), event.getLocalRegion()); assert (tx instanceof TXState) : tx.getClass().getSimpleName(); return tx.putEntryOnRemote(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, overwriteDestroyed); }
@Override public boolean putEntry(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) { if (logger.isDebugEnabled()) { // [DISTTX] TODO Remove throwable logger.debug("DistPeerTXStateStub.putEntry " + event.getKeyInfo().getKey(), new Throwable()); } boolean returnValue = super.putEntry(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, overwriteDestroyed); addPrimaryTransactionalOperations(new DistTxEntryEvent(event)); return returnValue; }
@Override public boolean putEntryOnRemote(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) throws DataLocationException { if (logger.isDebugEnabled()) { // [DISTTX] TODO Remove throwable logger.debug("DistPeerTXStateStub.putEntryOnRemote " + event.getKeyInfo().getKey(), new Throwable()); } boolean returnValue = super.putEntryOnRemote(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, overwriteDestroyed); addPrimaryTransactionalOperations(new DistTxEntryEvent(event)); return returnValue; }
public void invalidateOnRemote(EntryEventImpl event, boolean invokeCallbacks, boolean forceNewEntry) throws DataLocationException { this.operationCount++; TXStateInterface tx = getRealDeal(event.getKeyInfo(), event.getLocalRegion()); assert (tx instanceof TXState); tx.invalidateOnRemote(event, invokeCallbacks, forceNewEntry); }
public boolean hasSeenEvent(EntryEventImpl event) { BucketRegion bucket = getLocalBucketById(event.getKeyInfo().getBucketId()); if (bucket == null) { return false; } else { return bucket.hasSeenEvent(event); } }
public void destroyOnRemote(EntryEventImpl event, boolean cacheWrite, Object expectedOldValue) throws DataLocationException { this.operationCount++; TXStateInterface tx = getRealDeal(event.getKeyInfo(), event.getLocalRegion()); assert (tx instanceof TXState); tx.destroyOnRemote(event, cacheWrite, expectedOldValue); }
@Override public boolean putEntry(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) { if (logger.isDebugEnabled()) { // [DISTTX] TODO Remove throwable logger.debug("DistTXStateOnCoordinator.putEntry " + event.getKeyInfo().getKey(), new Throwable()); } boolean returnValue = super.putEntry(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, overwriteDestroyed); // putAll event is already added in postPutAll, don't add individual events // from the putAll operation again if (!event.getOperation().isPutAll()) { addPrimaryTransactionalOperations(new DistTxEntryEvent(event)); } return returnValue; }
@Override public void invalidateOnRemote(EntryEventImpl event, boolean invokeCallbacks, boolean forceNewEntry) throws DataLocationException { PartitionedRegion pr = (PartitionedRegion)event.getLocalRegion(); pr.getDataStore().invalidateLocally(event.getKeyInfo().getBucketId(), event); } @Override
@Override public void checkIfAboveThreshold(EntryEventImpl evi) throws LowMemoryException { getRegionAdvisor().checkIfBucketSick(evi.getKeyInfo().getBucketId(), evi.getKey()); }
@Override public boolean putEntryOnRemote(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) throws DataLocationException { PartitionedRegion pr = (PartitionedRegion)event.getLocalRegion(); return pr.getDataStore().putLocally(event.getKeyInfo().getBucketId(), event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified); } @Override
@Override public void destroyOnRemote(EntryEventImpl event, boolean cacheWrite, Object expectedOldValue) throws DataLocationException { PartitionedRegion pr = (PartitionedRegion)event.getLocalRegion(); pr.getDataStore().destroyLocally(event.getKeyInfo().getBucketId(), event, expectedOldValue); return; } @Override
@Override public boolean putEntryOnRemote(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) throws DataLocationException { if (logger.isDebugEnabled()) { // [DISTTX] TODO Remove throwable logger.debug("DistTXStateOnCoordinator.putEntryOnRemote " + event.getKeyInfo().getKey(), new Throwable()); } boolean returnValue = super.putEntryOnRemote(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, overwriteDestroyed); // putAll event is already added in postPutAll, don't add individual events // from the putAll operation again if (!event.getOperation().isPutAll()) { addPrimaryTransactionalOperations(new DistTxEntryEvent(event)); } return returnValue; }
public void invalidateExistingEntry(EntryEventImpl event, boolean invokeCallbacks, boolean forceNewEntry) { PartitionedRegion pr = (PartitionedRegion)event.getLocalRegion(); try { pr.invalidateRemotely(state.getTarget(), event.getKeyInfo().getBucketId(), event); } catch (TransactionException e) { RuntimeException re = getTransactionException(event.getKeyInfo(), e); re.initCause(e.getCause()); throw re; } catch (PrimaryBucketException e) { RuntimeException re = getTransactionException(event.getKeyInfo(), e); re.initCause(e); throw re; } catch (ForceReattemptException e) { RuntimeException re; if (isBucketNotFoundException(e)) { re = new TransactionDataRebalancedException(LocalizedStrings.PartitionedRegion_TRANSACTIONAL_DATA_MOVED_DUE_TO_REBALANCING.toLocalizedString()); } else { re = new TransactionDataNodeHasDepartedException(LocalizedStrings.PartitionedRegion_TRANSACTION_DATA_NODE_0_HAS_DEPARTED_TO_PROCEED_ROLLBACK_THIS_TRANSACTION_AND_BEGIN_A_NEW_ONE.toLocalizedString(state.getTarget())); } re.initCause(e); waitToRetry(); throw re; } trackBucketForTx(event.getKeyInfo()); }
@SuppressWarnings("unchecked") private boolean hasAdjunctRecipientsNeedingDelta(EntryEventImpl event) { PartitionedRegion pr = ((PartitionedRegion)this); BucketRegion br = null; FilterRoutingInfo filterRouting = null; Set twoMessages = Collections.EMPTY_SET; Set adjunctRecipients = Collections.EMPTY_SET; Set cacheservers = null; int bId = event.getKeyInfo().getBucketId(); try { br = pr.dataStore.getInitializedBucketForId(event.getKey(), bId); } catch (ForceReattemptException fre) { return true; } Set<InternalDistributedMember> recipients = br.getCacheDistributionAdvisor().adviseUpdate(event); twoMessages = br.getBucketAdvisor().adviseRequiresTwoMessages(); CacheDistributionAdvisor cda = pr.getCacheDistributionAdvisor(); filterRouting = cda.adviseFilterRouting(event, recipients); adjunctRecipients = br.getAdjunctReceivers(event, recipients, twoMessages, filterRouting); cacheservers = cda.adviseCacheServers(); return !Collections.disjoint(adjunctRecipients, cacheservers); }
public void destroyExistingEntry(final EntryEventImpl event, final boolean cacheWrite, Object expectedOldValue) { if(bridgeContext==null) { bridgeContext = event.getContext(); } if (hasSeenEvent(event)) { return; } TXEntryState tx = txWriteExistingEntry(event, expectedOldValue); final LocalRegion region = event.getRegion(); if (tx.destroy(event, cacheWrite, isOriginRemoteForEvents())) { Object key = event.getKey(); LocalRegion rr = region.getDataRegionForRead(event.getKeyInfo()); txReadRegion(rr).rmEntryUserAttr(key); recordEvent(event); } } /* (non-Javadoc)
/** * @throws com.gemstone.gemfire.SerializationException if serialization fails */ public InvalidateOpImpl(String region, EntryEventImpl event) { super(MessageType.INVALIDATE, event.getCallbackArgument() != null ? 4 : 3); Object callbackArg = event.getCallbackArgument(); this.event = event; getMessage().addStringPart(region); getMessage().addStringOrObjPart(event.getKeyInfo().getKey()); getMessage().addBytesPart(event.getEventId().calcBytes()); if (callbackArg != null) { getMessage().addObjPart(callbackArg); } }