/** * @param pageId Page ID. * @param statHolder Statistics holder to track IO operations. * @return Page absolute pointer. * @throws IgniteCheckedException If failed. */ protected final long acquirePage(long pageId, IoStatisticsHolder statHolder) throws IgniteCheckedException { assert PageIdUtils.flag(pageId) == FLAG_IDX && PageIdUtils.partId(pageId) == INDEX_PARTITION || PageIdUtils.flag(pageId) == FLAG_DATA && PageIdUtils.partId(pageId) <= MAX_PARTITION_ID : U.hexLong(pageId) + " flag=" + PageIdUtils.flag(pageId) + " part=" + PageIdUtils.partId(pageId); return pageMem.acquirePage(grpId, pageId, statHolder); }
/** * Update page * * @param link Link. * @throws IgniteCheckedException On error. */ private void touch(long link) throws IgniteCheckedException { PageMemory mem = grpCtx.dataRegion().pageMemory(); int grpId = grpCtx.groupId(); final long pageId = PageIdUtils.pageId(link); final long page = mem.acquirePage(grpId, pageId); try { // Touch page timestamp mem.readLock(grpId, pageId, page); mem.readUnlock(grpId, pageId, page); } finally { mem.releasePage(grpId, pageId, page); } } }
final long pageId = pageId(nextLink); final long page = pageMem.acquirePage(grpId, pageId, statHolder);
final long page = pageMemory.acquirePage(grp.groupId(), pageId); long pageAddr = pageMemory.readLock(grp.groupId(), pageId, page); try {
long page = pageMem.acquirePage(grpId, pageId);
final long curPage = pageMem.acquirePage(grpId, curId);
long page = mem.acquirePage(fullId.groupId(), fullId.pageId()); FullPageId fullId = pages.get(i); long page = mem.acquirePage(fullId.groupId(), fullId.pageId());
/** * @throws Exception if failed. */ private void writePageData(FullPageId fullId, PageMemory mem) throws Exception { long page = mem.acquirePage(fullId.groupId(), fullId.pageId()); try { long pageAddr = mem.writeLock(fullId.groupId(), fullId.pageId(), page); try { DataPageIO.VERSIONS.latest().initNewPage(pageAddr, fullId.pageId(), mem.realPageSize(fullId.groupId())); ThreadLocalRandom rnd = ThreadLocalRandom.current(); for (int i = PageIO.COMMON_HEADER_END; i < mem.pageSize(); i++) PageUtils.putByte(pageAddr, i, (byte)rnd.nextInt(255)); } finally { mem.writeUnlock(fullId.groupId(), fullId.pageId(), page, null, true); } } finally { mem.releasePage(fullId.groupId(), fullId.pageId(), page); } }
@Override public Object call() throws Exception { IgniteCacheDatabaseSharedManager db = ignite.context().cache().context().database(); for (int i = start; i < end; i++) { db.checkpointReadLock(); try { final FullPageId fullId = pageIds.get(i); long page = memory.acquirePage(fullId.groupId(), fullId.pageId()); try { final long pageAddr = memory.readLock(fullId.groupId(), fullId.pageId(), page); try { assertEquals(i * 2, PageUtils.getLong(pageAddr, PageIO.COMMON_HEADER_END)); } finally { memory.readUnlock(fullId.groupId(), fullId.pageId(), page); } } finally { memory.releasePage(fullId.groupId(), fullId.pageId(), page); } } finally { db.checkpointReadUnlock(); } } return null; } });
/** * Initializes page. * @param mem page memory implementation. * @param pageIO page io implementation. * @param fullId full page id. * @throws IgniteCheckedException if error occurs. */ private void initPage(PageMemory mem, PageIO pageIO, FullPageId fullId) throws IgniteCheckedException { long page = mem.acquirePage(fullId.groupId(), fullId.pageId()); try { final long pageAddr = mem.writeLock(fullId.groupId(), fullId.pageId(), page); try { pageIO.initNewPage(pageAddr, fullId.pageId(), mem.realPageSize(fullId.groupId())); } finally { mem.writeUnlock(fullId.groupId(), fullId.pageId(), page, null, true); } } finally { mem.releasePage(fullId.groupId(), fullId.pageId(), page); } }
/** * Initializes page. * @param mem page memory implementation. * @param pageIO page io implementation. * @param fullId full page id. * @throws IgniteCheckedException if error occurs. */ private void initPage(PageMemory mem, PageIO pageIO, FullPageId fullId) throws IgniteCheckedException { long page = mem.acquirePage(fullId.groupId(), fullId.pageId()); try { final long pageAddr = mem.writeLock(fullId.groupId(), fullId.pageId(), page); try { pageIO.initNewPage(pageAddr, fullId.pageId(), mem.realPageSize(fullId.groupId())); } finally { mem.writeUnlock(fullId.groupId(), fullId.pageId(), page, null, true); } } finally { mem.releasePage(fullId.groupId(), fullId.pageId(), page); } }
@Override public Object call() throws Exception { IgniteCacheDatabaseSharedManager db = ignite.context().cache().context().database(); for (int i = start; i < end; i++) { db.checkpointReadLock(); try { FullPageId fullId = pageIds.get(i); long page = memory.acquirePage(fullId.groupId(), fullId.pageId()); try { final long pageAddr = memory.writeLock(fullId.groupId(), fullId.pageId(), page); try { PageIO.setPageId(pageAddr, fullId.pageId()); PageUtils.putLong(pageAddr, PageIO.COMMON_HEADER_END, i * 2); } finally { memory.writeUnlock(fullId.groupId(), fullId.pageId(), page, null, true); } } finally { memory.releasePage(fullId.groupId(), fullId.pageId(), page); } } finally { db.checkpointReadUnlock(); } } return null; } });
/** * Initializes page. * @param mem page memory implementation. * @param pageIO page io implementation. * @param fullId full page id. * @throws IgniteCheckedException if error occurs. */ private void initPage(PageMemory mem, PageIO pageIO, FullPageId fullId) throws IgniteCheckedException { long page = mem.acquirePage(fullId.groupId(), fullId.pageId()); try { final long pageAddr = mem.writeLock(fullId.groupId(), fullId.pageId(), page); try { pageIO.initNewPage(pageAddr, fullId.pageId(), mem.realPageSize(fullId.groupId())); } finally { mem.writeUnlock(fullId.groupId(), fullId.pageId(), page, null, true); } } finally { mem.releasePage(fullId.groupId(), fullId.pageId(), page); } }
FullPageId fullId2 = allocatePage(mem); long page1 = mem.acquirePage(fullId1.groupId(), fullId1.pageId()); long page2 = mem.acquirePage(fullId2.groupId(), fullId2.pageId());
page = pageMem.acquirePage(CACHE_ID, pageId); long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);
page = pageMem.acquirePage(CACHE_ID, pageId); long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);
page = pageMem.acquirePage(CACHE_ID, pageId); long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);
/** * @param ig Ig. * @param pages Pages. */ private void checkRestore(IgniteEx ig, FullPageId[] pages) throws IgniteCheckedException { GridCacheSharedContext<Object, Object> shared = ig.context().cache().context(); GridCacheDatabaseSharedManager dbMgr = (GridCacheDatabaseSharedManager)shared.database(); dbMgr.enableCheckpoints(false).get(); PageMemory mem = shared.database().dataRegion(null).pageMemory(); dbMgr.checkpointReadLock(); try { for (FullPageId fullId : pages) { long page = mem.acquirePage(fullId.groupId(), fullId.pageId()); try { long pageAddr = mem.readLock(fullId.groupId(), fullId.pageId(), page); for (int j = PageIO.COMMON_HEADER_END; j < mem.realPageSize(fullId.groupId()); j += 4) assertEquals(j + (int)fullId.pageId(), PageUtils.getInt(pageAddr, j)); mem.readUnlock(fullId.groupId(), fullId.pageId(), page); } finally { mem.releasePage(fullId.groupId(), fullId.pageId(), page); } } } finally { dbMgr.checkpointReadUnlock(); } }
page = pageMem.acquirePage(CACHE_ID, pageId); long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);
page = pageMem.acquirePage(CACHE_ID, pageId); long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);