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();
         }

Reply via email to