@Test public void doesNotAddCallbackEvent_ifExistingRegionEntryIsTombstone() throws Exception { givenLocalRegion(); givenExistingRegionEntry(); when(existingRegionEntry.isRemoved()).thenReturn(true); when(existingRegionEntry.isTombstone()).thenReturn(true); doTxApplyDestroy(); assertThat(pendingCallbacks).isEmpty(); verify(existingRegionEntry, never()).makeTombstone(any(), any()); verify(txEntryState, never()).setVersionTag(any()); }
@Test public void putWithoutConcurrencyChecksEnabledDoesNotCallSetVersionTag() { createInstance(Operation.UPDATE, false, null, localTxEntryState); instance.put(); verify(localTxEntryState, never()).setVersionTag(any()); }
@Test public void putWithConcurrencyChecksEnabledDoesCallSetVersionTag() { when(internalRegion.getConcurrencyChecksEnabled()).thenReturn(true); VersionTag versionTag = mock(VersionTag.class); when(event.getVersionTag()).thenReturn(versionTag); createInstance(Operation.UPDATE, false, null, localTxEntryState); instance.put(); verify(localTxEntryState, times(1)).setVersionTag(eq(versionTag)); }
@Test public void txApplyDestroyDoesNotCallSetVersionTag_givenFactoryRegionEntryWithPartitionedRegionButNoConcurrencyChecks() { givenBucketRegion(); givenFactoryRegionEntry(); versionTag = mock(VersionTag.class); givenNoConcurrencyChecks(); inTokenMode = true; doTxApplyDestroy(); verify(txEntryState, never()).setVersionTag(any()); }
@Test public void doesNotAddCallbackEvent_givenExistingRegionEntryWithInTokenModeAndNotInRI() throws Exception { givenLocalRegion(); givenConcurrencyChecks(); givenExistingRegionEntry(); this.inTokenMode = true; this.inRI = false; doTxApplyDestroy(); assertThat(pendingCallbacks).isEmpty(); verify(owner).generateAndSetVersionTag(any(EntryEventImpl.class), same(existingRegionEntry)); verify(existingRegionEntry, never()).makeTombstone(any(), any()); verify(txEntryState).setVersionTag(any()); }
@Test public void txApplyDestroyDoesNotCallSetVersionTag_givenExistingRegionEntryWithPartitionedRegionButNoConcurrencyChecks() { givenBucketRegion(); givenExistingRegionEntry(); versionTag = mock(VersionTag.class); givenNoConcurrencyChecks(); doTxApplyDestroy(); verify(txEntryState, never()).setVersionTag(any()); }
@Test public void txApplyDestroyDoesNotCallSetVersionTag_givenFactoryRegionEntryWithPartitionedRegionAndConcurrencyChecks() { givenBucketRegion(); givenFactoryRegionEntry(); versionTag = mock(VersionTag.class); givenConcurrencyChecks(); doTxApplyDestroy(); verify(txEntryState, times(1)).setVersionTag(same(versionTag)); }
@Test public void txApplyDestroyCallsSetVersionTag_givenExistingRegionEntryWithPartitionedRegionAndConcurrencyChecks() { givenBucketRegion(); givenExistingRegionEntry(); versionTag = mock(VersionTag.class); givenConcurrencyChecks(); doTxApplyDestroy(); verify(txEntryState, times(1)).setVersionTag(same(versionTag)); }
@Test public void setsRegionEntryOnEvent_ifExistingRegionEntryIsValid() throws Exception { givenLocalRegion(); givenConcurrencyChecks(); givenExistingRegionEntry(); Object oldValue = "oldValue"; when(existingRegionEntry.getValueInVM(owner)).thenReturn(oldValue); doTxApplyDestroy(); assertThat(pendingCallbacks).size().isEqualTo(1); EntryEventImpl event = pendingCallbacks.get(0); assertThat(event.getRegionEntry()).isSameAs(existingRegionEntry); assertThat(event.getOldValue()).isSameAs(oldValue); verify(owner).generateAndSetVersionTag(any(EntryEventImpl.class), same(existingRegionEntry)); verify(existingRegionEntry, never()).makeTombstone(any(), any()); verify(txEntryState).setVersionTag(event.getVersionTag()); }
@Override protected void doAfterCompletionActions(boolean disabledEviction) { if (isOnlyExisting() && !isCompleted()) { if (didDestroy) { getOwner().txApplyPutHandleDidDestroy(getEvent().getKey()); } if (isInvokeCallbacks()) { getEvent().makeUpdate(); getOwner().invokeTXCallbacks(EnumListenerEvent.AFTER_UPDATE, getEvent(), false); } } if (getOwner().getConcurrencyChecksEnabled() && txEntryState != null) { txEntryState.setVersionTag(getEvent().getVersionTag()); } if (!isCallbackEventInPending()) { getEvent().release(); } }
txEntryState.setVersionTag(callbackEvent.getVersionTag()); txEntryState.setVersionTag(callbackEvent.getVersionTag()); txEntryState.setVersionTag(callbackEvent.getVersionTag());
txEntryState.setVersionTag(callbackEvent.getVersionTag()); txEntryState.setVersionTag(callbackEvent.getVersionTag());