@Override protected void verifyDistributeUpdateEntryVersion(DistributedRegion region, EntryEventImpl event, int cnt) { assertTrue(region instanceof BucketRegion); BucketRegion br = (BucketRegion) region; br.basicUpdateEntryVersion(event); // verify the result if (cnt > 0) { verify(br, times(cnt)).distributeUpdateEntryVersionOperation(eq(event)); } else { verify(br, never()).distributeUpdateEntryVersionOperation(eq(event)); } }
@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 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)); }
public void updateEntryVersionLocally(Integer bucketId, EntryEventImpl event) throws ForceReattemptException { if (logger.isDebugEnabled()) { logger.debug("updateEntryVersionLocally: bucketId={}{}{} for key={}", this.partitionedRegion.getPRId(), PartitionedRegion.BUCKET_ID_SEPARATOR, bucketId, event.getKey()); } final BucketRegion bucketRegion = getInitializedBucketForId(event.getKey(), bucketId); try { event.setRegion(bucketRegion); bucketRegion.basicUpdateEntryVersion(event); // bug 34361: don't send a reply if bucket was destroyed during the op bucketRegion.checkReadiness(); } catch (RegionDestroyedException rde) { checkRegionDestroyedOnBucket(bucketRegion, event.isOriginRemote(), rde); } } }