/** * Read row from data pages. * Can be called with cctx == null, if cache instance is unknown, but its ID is stored in the data row. * * @param grp Cache group. * @param sharedCtx Shared context. * @param pageMem Page memory. * @param rowData Row data. * @param skipVer Whether version read should be skipped. * @throws IgniteCheckedException If failed. */ public final void initFromLink( @Nullable CacheGroupContext grp, GridCacheSharedContext<?, ?> sharedCtx, PageMemory pageMem, RowData rowData, boolean skipVer ) throws IgniteCheckedException { // Group is null if try evict page, with persistence evictions should be disabled. assert grp != null || pageMem instanceof PageMemoryNoStoreImpl; CacheObjectContext coctx = grp != null ? grp.cacheObjectContext() : null; boolean readCacheId = grp == null || grp.storeCacheIdInDataPage(); int grpId = grp != null ? grp.groupId() : 0; IoStatisticsHolder statHolder = grp != null ? grp.statisticsHolderData() : IoStatisticsHolderNoOp.INSTANCE; doInitFromLink(link, sharedCtx, coctx, pageMem, grpId, statHolder, readCacheId, rowData, null, skipVer); }
/** {@inheritDoc} */ @Override public void call(@Nullable CacheDataRow old) throws IgniteCheckedException { if (old == null) { op = PUT; int cacheId = cacheId(); if (!grp.storeCacheIdInDataPage() && cacheId != CU.UNDEFINED_CACHE_ID) cacheId(CU.UNDEFINED_CACHE_ID); rowStore().addRow(this, grp.statisticsHolderData()); cacheId(cacheId); } else op = NOOP; }
boolean readCacheId = grp == null || grp.storeCacheIdInDataPage(); int grpId = grp != null ? grp.groupId() : 0; IoStatisticsHolder statHolder = grp != null ? grp.statisticsHolderData() : IoStatisticsHolderNoOp.INSTANCE;
/** {@inheritDoc} */ @Override public CacheDataRow createRow( GridCacheContext cctx, KeyCacheObject key, CacheObject val, GridCacheVersion ver, long expireTime, @Nullable CacheDataRow oldRow) throws IgniteCheckedException { int cacheId = grp.storeCacheIdInDataPage() ? cctx.cacheId() : CU.UNDEFINED_CACHE_ID; DataRow dataRow = makeDataRow(key, val, ver, expireTime, cacheId); if (canUpdateOldRow(cctx, oldRow, dataRow) && rowStore.updateRow(oldRow.link(), dataRow, grp.statisticsHolderData())) dataRow.link(oldRow.link()); else { CacheObjectContext coCtx = cctx.cacheObjectContext(); key.valueBytes(coCtx); val.valueBytes(coCtx); rowStore.addRow(dataRow, grp.statisticsHolderData()); } assert dataRow.link() != 0 : dataRow; if (grp.sharedGroup() && dataRow.cacheId() == CU.UNDEFINED_CACHE_ID) dataRow.cacheId(cctx.cacheId()); return dataRow; }
/** {@inheritDoc} */ @Override public void call(@Nullable CacheDataRow oldRow) throws IgniteCheckedException { this.oldRow = oldRow; if (oldRow == null) { op = PUT; int cacheId = cacheId(); if (!grp.storeCacheIdInDataPage() && cacheId != CU.UNDEFINED_CACHE_ID) cacheId(CU.UNDEFINED_CACHE_ID); rowStore().addRow(this, grp.statisticsHolderData()); cacheId(cacheId); } else { op = NOOP; if (oldRow.mvccTxState() != mvccTxState() || oldRow.newMvccCoordinatorVersion() != newMvccCoordinatorVersion() || oldRow.newMvccCounter() != newMvccCounter() || oldRow.newMvccOperationCounter() != newMvccOperationCounter() || oldRow.newMvccTxState() != newMvccTxState()) { rowStore().updateDataRow(oldRow.link(), mvccApplyChanges, this, grp.statisticsHolderData()); } } }
if (grp.storeCacheIdInDataPage()) addr += 4; // Skip cache id.
if (!grp.storeCacheIdInDataPage() && updateRow.cacheId() != CU.UNDEFINED_CACHE_ID) { updateRow.cacheId(CU.UNDEFINED_CACHE_ID);
int cacheId = grp.storeCacheIdInDataPage() ? cctx.cacheId() : CU.UNDEFINED_CACHE_ID;
rowStore.updateDataRow(oldRow.link(), mvccUpdateMarker, mvccSnapshot, grp.statisticsHolderData()); if (!grp.storeCacheIdInDataPage() && updateRow.cacheId() != CU.UNDEFINED_CACHE_ID) { updateRow.cacheId(CU.UNDEFINED_CACHE_ID);
if (!grp.storeCacheIdInDataPage() && updateRow.cacheId() != CU.UNDEFINED_CACHE_ID) { updateRow.cacheId(CU.UNDEFINED_CACHE_ID);
/** {@inheritDoc} */ @Override public void call(@Nullable CacheDataRow old) throws IgniteCheckedException { if (old == null) { op = PUT; int cacheId = cacheId(); if (!grp.storeCacheIdInDataPage() && cacheId != CU.UNDEFINED_CACHE_ID) cacheId(CU.UNDEFINED_CACHE_ID); rowStore().addRow(this); cacheId(cacheId); } else op = NOOP; }
/** {@inheritDoc} */ @Override public CacheDataRow createRow( GridCacheContext cctx, KeyCacheObject key, CacheObject val, GridCacheVersion ver, long expireTime, @Nullable CacheDataRow oldRow) throws IgniteCheckedException { int cacheId = grp.storeCacheIdInDataPage() ? cctx.cacheId() : CU.UNDEFINED_CACHE_ID; DataRow dataRow = makeDataRow(key, val, ver, expireTime, cacheId); if (canUpdateOldRow(cctx, oldRow, dataRow) && rowStore.updateRow(oldRow.link(), dataRow)) dataRow.link(oldRow.link()); else { CacheObjectContext coCtx = cctx.cacheObjectContext(); key.valueBytes(coCtx); val.valueBytes(coCtx); rowStore.addRow(dataRow); } assert dataRow.link() != 0 : dataRow; if (grp.sharedGroup() && dataRow.cacheId() == CU.UNDEFINED_CACHE_ID) dataRow.cacheId(cctx.cacheId()); return dataRow; }
/** {@inheritDoc} */ @Override public void call(@Nullable CacheDataRow oldRow) throws IgniteCheckedException { this.oldRow = oldRow; if (oldRow == null) { op = PUT; int cacheId = cacheId(); if (!grp.storeCacheIdInDataPage() && cacheId != CU.UNDEFINED_CACHE_ID) cacheId(CU.UNDEFINED_CACHE_ID); rowStore().addRow(this); cacheId(cacheId); } else { op = NOOP; if (oldRow.mvccTxState() != mvccTxState() || oldRow.newMvccCoordinatorVersion() != newMvccCoordinatorVersion() || oldRow.newMvccCounter() != newMvccCounter() || oldRow.newMvccOperationCounter() != newMvccOperationCounter() || oldRow.newMvccTxState() != newMvccTxState()) { rowStore().updateDataRow(oldRow.link(), mvccApplyChanges, this); } } }
boolean readCacheId = grp == null || grp.storeCacheIdInDataPage();
if (grp.storeCacheIdInDataPage()) addr += 4; // Skip cache id.
if (!grp.storeCacheIdInDataPage() && updateRow.cacheId() != CU.UNDEFINED_CACHE_ID) { updateRow.cacheId(CU.UNDEFINED_CACHE_ID);
int cacheId = grp.storeCacheIdInDataPage() ? cctx.cacheId() : CU.UNDEFINED_CACHE_ID;
rowStore.updateDataRow(oldRow.link(), mvccUpdateMarker, mvccSnapshot); if (!grp.storeCacheIdInDataPage() && updateRow.cacheId() != CU.UNDEFINED_CACHE_ID) { updateRow.cacheId(CU.UNDEFINED_CACHE_ID);
if (!grp.storeCacheIdInDataPage() && updateRow.cacheId() != CU.UNDEFINED_CACHE_ID) { updateRow.cacheId(CU.UNDEFINED_CACHE_ID);
assert res == ResultType.PREV_NULL; if (!grp.storeCacheIdInDataPage() && updateRow.cacheId() != CU.UNDEFINED_CACHE_ID) { updateRow.cacheId(CU.UNDEFINED_CACHE_ID);