static boolean doSynchronousWrite(InternalRegion region, DiskRegion dr) { return dr.isSync() || (dr.isBackup() && !region.isInitialized()); }
@Test public void doSynchronousWriteReturnsTrueWhenDiskRegionIsSync() { when(diskRegion.isSync()).thenReturn(true); boolean result = callDoSynchronousWrite(); assertThat(result).isTrue(); }
@Test public void doSynchronousWriteReturnsFalseWhenPersistentRegionIsInitialized() { when(diskRegion.isSync()).thenReturn(false); when(diskRegion.isBackup()).thenReturn(true); when(internalRegion.isInitialized()).thenReturn(true); boolean result = callDoSynchronousWrite(); assertThat(result).isFalse(); }
@Test public void doSynchronousWriteReturnsTrueWhenPersistentRegionIsInitializing() { when(diskRegion.isSync()).thenReturn(false); when(diskRegion.isBackup()).thenReturn(true); when(internalRegion.isInitialized()).thenReturn(false); boolean result = callDoSynchronousWrite(); assertThat(result).isTrue(); }
@Test public void doSynchronousWriteReturnsFalseWhenOverflowOnly() { when(diskRegion.isSync()).thenReturn(false); when(diskRegion.isBackup()).thenReturn(false); when(internalRegion.isInitialized()).thenReturn(false); boolean result = callDoSynchronousWrite(); assertThat(result).isFalse(); }
@Test public void whenBasicUpdateWithDiskRegionBackupAndAsyncWritesAndEntryNotSetThenReleaseOnStoredObjectShouldBeCalled() throws Exception { StoredObject storedObject = mock(StoredObject.class); LocalRegion lr = mock(LocalRegion.class); DiskEntry diskEntry = mock(DiskEntry.class); when(diskEntry.getDiskId()).thenReturn(mock(DiskId.class)); EntryEventImpl entryEvent = mock(EntryEventImpl.class); DiskRegion diskRegion = mock(DiskRegion.class); when(diskRegion.isBackup()).thenReturn(true); doThrow(new RegionDestroyedException("", "")).when(diskRegion).put(eq(diskEntry), eq(lr), ArgumentMatchers.any(DiskEntry.Helper.ValueWrapper.class), anyBoolean()); when(lr.getDiskRegion()).thenReturn(diskRegion); when(diskRegion.isSync()).thenReturn(false); when(lr.isInitialized()).thenReturn(true); when(lr.getConcurrencyChecksEnabled()).thenThrow(new RegionDestroyedException("", "")); try { DiskEntry.Helper.basicUpdateForTesting(diskEntry, lr, storedObject, entryEvent); fail(); } catch (RegionDestroyedException rde) { verify(storedObject, times(1)).release(); } }
/** * @since GemFire 5.1 */ public void forceRolling(DiskRegion dr) { if (!dr.isBackup()) return; if (!dr.isSync() && this.maxAsyncItems == 0 && getTimeInterval() == 0) { forceFlush(); } acquireReadLock(dr); try { PersistentOplogSet oplogSet = getPersistentOplogSet(dr); oplogSet.forceRoll(dr); } finally { releaseReadLock(dr); } }
public static void doAsyncFlush(VersionTag tag, InternalRegion region) { if (region.isThisRegionBeingClosedOrDestroyed()) return; DiskRegion dr = region.getDiskRegion(); if (!dr.isBackup()) { return; } assert !dr.isSync(); dr.acquireReadLock(); try { dr.getDiskStore().putVersionTagOnly(region, tag, true); } finally { dr.releaseReadLock(); } }
boolean done = false; try { if (entry instanceof EvictableEntry && !dr.isSync()) { synchronized (entry) { DiskId did = entry.getDiskId();
assert !dr.isSync();