@Test public void lockKeysAndPrimaryReturnFalseIfDoesNotNeedWriteLock() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(false).when(bucketRegion).needWriteLock(event); assertThat(bucketRegion.lockKeysAndPrimary(event)).isFalse(); }
@Test(expected = RegionDestroyedException.class) public void basicUpdateEntryVersionDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); when(event.getRegion()).thenReturn(bucketRegion); doReturn(true).when(bucketRegion).hasSeenEvent(event); doReturn(mock(AbstractRegionMap.class)).when(bucketRegion).getRegionMap(); bucketRegion.basicUpdateEntryVersion(event); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void basicPutEntryReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(mock(AbstractRegionMap.class)).when(bucketRegion).getRegionMap(); bucketRegion.basicPutEntry(event, 1); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void basicDestroyDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.basicDestroy(event, false, null); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void basicPutEntryDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.basicPutEntry(event, 1); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@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(expected = RegionDestroyedException.class) public void basicInvalidateDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.basicInvalidate(event, false, false); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void basicInvalidateReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(true).when(bucketRegion).hasSeenEvent(event); bucketRegion.basicInvalidate(event, false, false); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void basicDestroyReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(true).when(bucketRegion).hasSeenEvent(event); bucketRegion.basicDestroy(event, false, null); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void basicUpdateEntryVersionReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); when(event.getRegion()).thenReturn(bucketRegion); doReturn(true).when(bucketRegion).hasSeenEvent(event); doReturn(mock(AbstractRegionMap.class)).when(bucketRegion).getRegionMap(); bucketRegion.basicUpdateEntryVersion(event); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void lockKeysAndPrimaryThrowsIfWaitUntilLockedThrows() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(keys).when(bucketRegion).getKeysToBeLocked(event); doThrow(regionDestroyedException).when(bucketRegion).waitUntilLocked(keys); bucketRegion.lockKeysAndPrimary(event); }
@Test public void lockKeysAndPrimaryReleaseLockHeldIfDoesNotLockForPrimary() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(keys).when(bucketRegion).getKeysToBeLocked(event); doReturn(true).when(bucketRegion).waitUntilLocked(keys); doReturn(true).when(bucketRegion).doLockForPrimary(false); bucketRegion.lockKeysAndPrimary(event); verify(bucketRegion, never()).removeAndNotifyKeys(keys); }
@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)); }
@Test(expected = PrimaryBucketException.class) public void lockKeysAndPrimaryReleaseLockHeldIfDoLockForPrimaryThrows() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(keys).when(bucketRegion).getKeysToBeLocked(event); doReturn(true).when(bucketRegion).waitUntilLocked(keys); doThrow(new PrimaryBucketException()).when(bucketRegion).doLockForPrimary(false); bucketRegion.lockKeysAndPrimary(event); verify(bucketRegion).removeAndNotifyKeys(keys); }
/** * This method is called when a miss from a get ends up finding an object through a cache loader * or from a server. In that case we want to make sure that we don't move this bucket while * putting the value in the ache. * * @see LocalRegion#basicPutEntry(EntryEventImpl, long) */ @Override protected RegionEntry basicPutEntry(final EntryEventImpl event, final long lastModified) throws TimeoutException, CacheWriterException { boolean locked = lockKeysAndPrimary(event); try { if (getPartitionedRegion().isParallelWanEnabled()) { handleWANEvent(event); } event.setInvokePRCallbacks(true); forceSerialized(event); return super.basicPutEntry(event, lastModified); } finally { if (locked) { releaseLockForKeysAndPrimary(event); } } }
Object expectedOldValue, boolean requireOldValue, long lastModified, boolean overwriteDestroyed) throws TimeoutException, CacheWriterException { boolean locked = lockKeysAndPrimary(event);
final boolean locked = internalRegion.lockWhenRegionIsInitializing(); try { boolean keysAndPrimaryLocked = lockKeysAndPrimary(event); try { if (!hasSeenEvent(event)) {
Assert.assertTrue(event.getOperation().isDistributed()); boolean locked = lockKeysAndPrimary(event); try {
Assert.assertTrue(event.getOperation().isDistributed()); boolean locked = lockKeysAndPrimary(event); try {