[ https://issues.apache.org/jira/browse/IGNITE-20138?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vladimir Steshin updated IGNITE-20138: -------------------------------------- Description: We create PageMemoryImpl as: {code:java} PageMemoryImpl pageMem = new PageMemoryImpl( wrapMetricsPersistentMemoryProvider(memProvider, regMetrics), calculateFragmentSizes( regCfg.getName(), dsCfg.getConcurrencyLevel(), cacheSize, chpBufSize ), cctx, pageMgr, dsCfg.getPageSize(), (fullId, pageBuf, tag) -> { regMetrics.onPageWritten(); // Write page to disk. pageMgr.write(fullId.groupId(), fullId.pageId(), pageBuf, tag, true); getCheckpointer().currentProgress().updateEvictedPages(1); }, trackable, this, regMetrics, regCfg, resolveThrottlingPolicy(), () -> getCheckpointer().currentProgress() ); {code} Where `getCheckpointer()` and the `CheckpointLockStateChecker stateChecker` constructor parameter can be not bound to PageMemory's data region. For instance, defragmentation uses own reqion and own checkpointer. See IGNITE-19904 was: We create PageMemoryImpl as: {code:java} PageMemoryImpl pageMem = new PageMemoryImpl( wrapMetricsPersistentMemoryProvider(memProvider, regMetrics), calculateFragmentSizes( regCfg.getName(), dsCfg.getConcurrencyLevel(), cacheSize, chpBufSize ), cctx, pageMgr, dsCfg.getPageSize(), (fullId, pageBuf, tag) -> { regMetrics.onPageWritten(); // Write page to disk. pageMgr.write(fullId.groupId(), fullId.pageId(), pageBuf, tag, true); getCheckpointer().currentProgress().updateEvictedPages(1); }, trackable, this, regMetrics, regCfg, resolveThrottlingPolicy(), () -> getCheckpointer().currentProgress() ); {code} Where `getCheckpointer()` and the `CheckpointLockStateChecker stateChecker` constructor parameter can be bound to other data region. For instance, defragmentation uses own reqion and own checkpointer. See IGNITE-19904 > PageMemory should use actual dataregion's checkpointer. > ------------------------------------------------------- > > Key: IGNITE-20138 > URL: https://issues.apache.org/jira/browse/IGNITE-20138 > Project: Ignite > Issue Type: Improvement > Reporter: Vladimir Steshin > Priority: Major > > We create PageMemoryImpl as: > {code:java} > PageMemoryImpl pageMem = new PageMemoryImpl( > wrapMetricsPersistentMemoryProvider(memProvider, regMetrics), > calculateFragmentSizes( > regCfg.getName(), > dsCfg.getConcurrencyLevel(), > cacheSize, > chpBufSize > ), > cctx, > pageMgr, > dsCfg.getPageSize(), > (fullId, pageBuf, tag) -> { > regMetrics.onPageWritten(); > // Write page to disk. > pageMgr.write(fullId.groupId(), fullId.pageId(), pageBuf, > tag, true); > getCheckpointer().currentProgress().updateEvictedPages(1); > }, > trackable, > this, > regMetrics, > regCfg, > resolveThrottlingPolicy(), > () -> getCheckpointer().currentProgress() > ); > {code} > Where `getCheckpointer()` and the `CheckpointLockStateChecker stateChecker` > constructor parameter can be not bound to PageMemory's data region. For > instance, defragmentation uses own reqion and own checkpointer. See > IGNITE-19904 -- This message was sent by Atlassian Jira (v8.20.10#820010)