@Override protected void verifyDistributeUpdate(DistributedRegion region, EntryEventImpl event, int cnt) { assertTrue(region instanceof BucketRegion); BucketRegion br = (BucketRegion) region; br.virtualPut(event, false, false, null, false, 12345L, false); // verify the result if (cnt > 0) { verify(br, times(cnt)).distributeUpdateOperation(eq(event), eq(12345L)); } else { verify(br, never()).distributeUpdateOperation(eq(event), eq(12345L)); } }
@Override public boolean virtualPut(EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) throws TimeoutException, CacheWriterException { try { boolean success = super.virtualPut(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, overwriteDestroyed); if (success) { if (logger.isDebugEnabled()) { logger.debug("Key : ----> {}", event.getKey()); } } else { GatewaySenderEventImpl.release(event.getRawNewValue()); } return success; } finally { GatewaySenderEventImpl.release(event.getRawOldValue()); } }
@Test(expected = RegionDestroyedException.class) public void virtualPutDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.virtualPut(event, false, true, null, false, 1, true); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void virtualPutReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(true).when(bucketRegion).hasSeenEvent(event); bucketRegion.virtualPut(event, false, true, null, false, 1, true); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
public boolean putLocally(final BucketRegion bucketRegion, final EntryEventImpl event, boolean ifNew, boolean ifOld, Object expectedOldValue, boolean requireOldValue, final long lastModified) throws PrimaryBucketException, ForceReattemptException { boolean didPut = false; // false if entry put fails // final BucketRegion bucketRegion = getInitializedBucketForId(event.getKey(), bucketId); try { event.setRegion(bucketRegion); if (event.isOriginRemote()) { didPut = bucketRegion.basicUpdate(event, ifNew, ifOld, lastModified, false); } else { // Skip yet another validation didPut = bucketRegion.virtualPut(event, ifNew, ifOld, expectedOldValue, requireOldValue, lastModified, false); } // bug 34361: don't send a reply if bucket was destroyed during the op bucketRegion.checkReadiness(); } catch (RegionDestroyedException rde) { checkRegionDestroyedOnBucket(bucketRegion, event.isOriginRemote(), rde); } return didPut; }
} else { result = bucketRegion.virtualPut(event, ifNew, ifOld, null, // expectedOldValue requireOldValue, lastModified, false);