use of org.apache.ignite.internal.processors.cache.persistence.freelist.CorruptedFreeListException in project ignite by apache.
the class PagesPossibleCorruptionDiagnosticTest method testDiagnosticCollectedOnCorruptedPageList.
/**
* Tests page list pages are collected in {@link CorruptedFreeListException}.
*/
@Test
@WithSystemProperty(key = IgniteSystemProperties.IGNITE_PAGES_LIST_DISABLE_ONHEAP_CACHING, value = "true")
public void testDiagnosticCollectedOnCorruptedPageList() throws Exception {
IgniteEx ignite = startGrid(0);
ignite.cluster().state(ClusterState.ACTIVE);
IgniteCache<Integer, Integer> cache = ignite.getOrCreateCache(new CacheConfiguration<Integer, Integer>(DEFAULT_CACHE_NAME).setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL).setAffinity(new RendezvousAffinityFunction(false, 1)));
cache.put(1, 1);
cache.remove(1);
int grpId = cacheGroupId(DEFAULT_CACHE_NAME, null);
IgniteCacheOffheapManager.CacheDataStore dataStore = ignite.context().cache().cacheGroup(grpId).offheap().cacheDataStores().iterator().next();
GridCacheOffheapManager.GridCacheDataStore store = (GridCacheOffheapManager.GridCacheDataStore) dataStore;
AbstractFreeList freeList = store.getCacheStoreFreeList();
ReuseBag bag = new LongListReuseBag();
bag.addFreePage(pageId(0, FLAG_DATA, 10));
bag.addFreePage(pageId(0, FLAG_DATA, 11));
long[] pages = null;
try {
freeList.addForRecycle(bag);
} catch (CorruptedFreeListException e) {
pages = e.pageIds();
}
assertNotNull(pages);
}
Aggregations