This is an automated email from the ASF dual-hosted git repository. tkalkirill pushed a commit to branch ignite-26725 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit d520925afc58f1094605f80190f67fe3134050ef Author: Kirill Tkalenko <[email protected]> AuthorDate: Thu Oct 16 10:14:43 2025 +0300 IGNITE-26725 wip --- .../persistence/checkpoint/CheckpointProgress.java | 5 +++++ .../checkpoint/CheckpointProgressImpl.java | 8 ++++++++ .../persistence/checkpoint/Checkpointer.java | 20 ++++++++++++++++---- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgress.java b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgress.java index 6ac92e6ea98..58a714254d2 100644 --- a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgress.java +++ b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgress.java @@ -62,6 +62,11 @@ public interface CheckpointProgress { */ AtomicInteger syncedPagesCounter(); + /** + * Returns a number of fsync-ed checkpoint files. + */ + AtomicInteger syncedFilesCounter(); + /** * Return a number of evicted pages during current checkpoint. */ diff --git a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgressImpl.java b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgressImpl.java index fdd160b2b17..0a5e98dd67d 100644 --- a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgressImpl.java +++ b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgressImpl.java @@ -64,6 +64,9 @@ public class CheckpointProgressImpl implements CheckpointProgress { /** Counter for fsynced checkpoint pages. */ private final AtomicInteger syncedPagesCntr = new AtomicInteger(); + /** Counter for fsynced checkpoint files. */ + private final AtomicInteger syncedFilesCntr = new AtomicInteger(); + /** Counter for evicted checkpoint pages. */ private final AtomicInteger evictedPagesCntr = new AtomicInteger(); @@ -154,6 +157,11 @@ public class CheckpointProgressImpl implements CheckpointProgress { return syncedPagesCntr; } + @Override + public AtomicInteger syncedFilesCounter() { + return syncedFilesCntr; + } + @Override public AtomicInteger evictedPagesCounter() { return evictedPagesCntr; diff --git a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/Checkpointer.java b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/Checkpointer.java index 0d331a17e74..356f2a7d713 100644 --- a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/Checkpointer.java +++ b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/Checkpointer.java @@ -121,6 +121,7 @@ public class Checkpointer extends IgniteWorker { private static final String CHECKPOINT_FINISHED_LOG_TEMPLATE = "Checkpoint finished [" + "checkpointId={}, " + "pages={}, " + + "fsyncFiles={}, " + "pagesWriteTime={}ms, " + "fsyncTime={}ms, " + "replicatorLogSyncTime={}ms, " @@ -431,6 +432,7 @@ public class Checkpointer extends IgniteWorker { CHECKPOINT_FINISHED_LOG_TEMPLATE, chp.progress.id(), chp.dirtyPagesSize, + currentCheckpointProgress.syncedFilesCounter().get(), tracker.pagesWriteDuration(MILLISECONDS), tracker.fsyncDuration(MILLISECONDS), tracker.replicatorLogSyncDuration(MILLISECONDS), @@ -638,9 +640,9 @@ public class Checkpointer extends IgniteWorker { return; } - fsyncDeltaFilePageStoreOnCheckpointThread(filePageStore); + fsyncDeltaFilePageStoreOnCheckpointThread(filePageStore, currentCheckpointProgress); - fsyncFilePageStoreOnCheckpointThread(filePageStore); + fsyncFilePageStoreOnCheckpointThread(filePageStore, currentCheckpointProgress); renameDeltaFileOnCheckpointThread(filePageStore, partitionId); @@ -652,11 +654,16 @@ public class Checkpointer extends IgniteWorker { } } - private void fsyncFilePageStoreOnCheckpointThread(FilePageStore filePageStore) throws IgniteInternalCheckedException { + private void fsyncFilePageStoreOnCheckpointThread( + FilePageStore filePageStore, + CheckpointProgressImpl currentCheckpointProgress + ) throws IgniteInternalCheckedException { blockingSectionBegin(); try { filePageStore.sync(); + + currentCheckpointProgress.syncedFilesCounter().incrementAndGet(); } finally { blockingSectionEnd(); } @@ -889,7 +896,10 @@ public class Checkpointer extends IgniteWorker { return safeAbs(interval + startDelay); } - private void fsyncDeltaFilePageStoreOnCheckpointThread(FilePageStore filePageStore) throws IgniteInternalCheckedException { + private void fsyncDeltaFilePageStoreOnCheckpointThread( + FilePageStore filePageStore, + CheckpointProgressImpl currentCheckpointProgress + ) throws IgniteInternalCheckedException { blockingSectionBegin(); try { @@ -900,6 +910,8 @@ public class Checkpointer extends IgniteWorker { } deltaFilePageStoreFuture.join().sync(); + + currentCheckpointProgress.syncedFilesCounter().incrementAndGet(); } finally { blockingSectionEnd(); }
