Skip to content

Commit 6601cd0

Browse files
authored
IGNITE-26725 Add logging of fsync files for aipersist (#6790)
1 parent 7ec4438 commit 6601cd0

File tree

5 files changed

+42
-4
lines changed

5 files changed

+42
-4
lines changed

modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/Checkpoint.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ class Checkpoint {
3333
/** Number of written dirty pages. */
3434
int writtenPages;
3535

36+
/** Number of fsync-ed files. */
37+
int syncedFiles;
38+
3639
/**
3740
* Constructor.
3841
*
@@ -59,6 +62,7 @@ boolean hasDelta() {
5962
void finishCheckpoint() {
6063
if (hasDelta()) {
6164
writtenPages = progress.writtenPages();
65+
syncedFiles = progress.syncedFiles();
6266

6367
progress.pagesToWrite(null);
6468

modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgress.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,7 @@ public interface CheckpointProgress {
8181
* Returns a number of written checkpoint pages.
8282
*/
8383
int writtenPages();
84+
85+
/** Returns a number of fsync-ed checkpoint files. */
86+
int syncedFiles();
8487
}

modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgressImpl.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ public class CheckpointProgressImpl implements CheckpointProgress {
6464
/** Counter for fsynced checkpoint pages. */
6565
private final AtomicInteger syncedPagesCntr = new AtomicInteger();
6666

67+
/** Counter for fsynced checkpoint files. */
68+
private final AtomicInteger syncedFilesCntr = new AtomicInteger();
69+
6770
/** Counter for evicted checkpoint pages. */
6871
private final AtomicInteger evictedPagesCntr = new AtomicInteger();
6972

@@ -154,6 +157,16 @@ public AtomicInteger syncedPagesCounter() {
154157
return syncedPagesCntr;
155158
}
156159

160+
/** Returns counter of fsync-ed checkpoint files. */
161+
public AtomicInteger syncedFilesCounter() {
162+
return syncedFilesCntr;
163+
}
164+
165+
@Override
166+
public int syncedFiles() {
167+
return syncedFilesCntr.get();
168+
}
169+
157170
@Override
158171
public AtomicInteger evictedPagesCounter() {
159172
return evictedPagesCntr;
@@ -214,6 +227,7 @@ public void initCounters(int checkpointPages) {
214227
writtenPagesCntr.set(0);
215228
syncedPagesCntr.set(0);
216229
evictedPagesCntr.set(0);
230+
syncedFilesCntr.set(0);
217231
}
218232

219233
/**

modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/Checkpointer.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ public class Checkpointer extends IgniteWorker {
121121
private static final String CHECKPOINT_FINISHED_LOG_TEMPLATE = "Checkpoint finished ["
122122
+ "checkpointId={}, "
123123
+ "writtenPages={}, "
124+
+ "fsyncFiles={}, "
124125
+ "pagesWriteTime={}ms, "
125126
+ "fsyncTime={}ms, "
126127
+ "replicatorLogSyncTime={}ms, "
@@ -432,6 +433,7 @@ void doCheckpoint() throws IgniteInternalCheckedException {
432433
CHECKPOINT_FINISHED_LOG_TEMPLATE,
433434
chp.progress.id(),
434435
totalWrittenPages,
436+
chp.syncedFiles,
435437
tracker.pagesWriteDuration(MILLISECONDS),
436438
tracker.fsyncDuration(MILLISECONDS),
437439
tracker.replicatorLogSyncDuration(MILLISECONDS),
@@ -639,9 +641,9 @@ private void fsyncPartitionFiles(
639641
return;
640642
}
641643

642-
fsyncDeltaFilePageStoreOnCheckpointThread(filePageStore);
644+
fsyncDeltaFilePageStoreOnCheckpointThread(filePageStore, currentCheckpointProgress);
643645

644-
fsyncFilePageStoreOnCheckpointThread(filePageStore);
646+
fsyncFilePageStoreOnCheckpointThread(filePageStore, currentCheckpointProgress);
645647

646648
renameDeltaFileOnCheckpointThread(filePageStore, partitionId);
647649

@@ -653,11 +655,16 @@ private void fsyncPartitionFiles(
653655
}
654656
}
655657

656-
private void fsyncFilePageStoreOnCheckpointThread(FilePageStore filePageStore) throws IgniteInternalCheckedException {
658+
private void fsyncFilePageStoreOnCheckpointThread(
659+
FilePageStore filePageStore,
660+
CheckpointProgressImpl currentCheckpointProgress
661+
) throws IgniteInternalCheckedException {
657662
blockingSectionBegin();
658663

659664
try {
660665
filePageStore.sync();
666+
667+
currentCheckpointProgress.syncedFilesCounter().incrementAndGet();
661668
} finally {
662669
blockingSectionEnd();
663670
}
@@ -890,7 +897,10 @@ long nextCheckpointInterval() {
890897
return safeAbs(interval + startDelay);
891898
}
892899

893-
private void fsyncDeltaFilePageStoreOnCheckpointThread(FilePageStore filePageStore) throws IgniteInternalCheckedException {
900+
private void fsyncDeltaFilePageStoreOnCheckpointThread(
901+
FilePageStore filePageStore,
902+
CheckpointProgressImpl currentCheckpointProgress
903+
) throws IgniteInternalCheckedException {
894904
blockingSectionBegin();
895905

896906
try {
@@ -901,6 +911,8 @@ private void fsyncDeltaFilePageStoreOnCheckpointThread(FilePageStore filePageSto
901911
}
902912

903913
deltaFilePageStoreFuture.join().sync();
914+
915+
currentCheckpointProgress.syncedFilesCounter().incrementAndGet();
904916
} finally {
905917
blockingSectionEnd();
906918
}

modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/persistence/checkpoint/CheckpointProgressImplTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,12 @@ void testCounters() {
9090
assertEquals(0, progressImpl.writtenPagesCounter().get());
9191
assertEquals(0, progressImpl.syncedPagesCounter().get());
9292
assertEquals(0, progressImpl.evictedPagesCounter().get());
93+
assertEquals(0, progressImpl.syncedFilesCounter().get());
9394

9495
progressImpl.writtenPagesCounter().incrementAndGet();
9596
progressImpl.syncedPagesCounter().incrementAndGet();
9697
progressImpl.evictedPagesCounter().incrementAndGet();
98+
progressImpl.syncedFilesCounter().incrementAndGet();
9799

98100
progressImpl.initCounters(100500);
99101

@@ -102,10 +104,12 @@ void testCounters() {
102104
assertEquals(0, progressImpl.writtenPagesCounter().get());
103105
assertEquals(0, progressImpl.syncedPagesCounter().get());
104106
assertEquals(0, progressImpl.evictedPagesCounter().get());
107+
assertEquals(0, progressImpl.syncedFilesCounter().get());
105108

106109
progressImpl.writtenPagesCounter().incrementAndGet();
107110
progressImpl.syncedPagesCounter().incrementAndGet();
108111
progressImpl.evictedPagesCounter().incrementAndGet();
112+
progressImpl.syncedFilesCounter().incrementAndGet();
109113

110114
progressImpl.clearCounters();
111115

@@ -114,6 +118,7 @@ void testCounters() {
114118
assertEquals(0, progressImpl.writtenPagesCounter().get());
115119
assertEquals(0, progressImpl.syncedPagesCounter().get());
116120
assertEquals(0, progressImpl.evictedPagesCounter().get());
121+
assertEquals(0, progressImpl.syncedFilesCounter().get());
117122

118123
progressImpl.currentCheckpointPagesCount(42);
119124

0 commit comments

Comments
 (0)