From e29d64bdeb3e5d2d56a0e0aea5abf540abca5c34 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Tue, 3 Dec 2024 09:20:40 +0200 Subject: [PATCH 1/3] Online checkpoint replication state --- src/backend/access/transam/xlog.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index d359b71bafd..280f66696c8 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7993,16 +7993,11 @@ CreateOverwriteContrecordRecord(XLogRecPtr aborted_lsn, XLogRecPtr pagePtr, static void CheckPointReplicationState(int flags) { - if (flags & CHECKPOINT_IS_SHUTDOWN) - { - CheckPointRelationMap(); - CheckPointReplicationSlots(true); - CheckPointSnapBuild(); - CheckPointLogicalRewriteHeap(); - CheckPointReplicationOrigin(); - } - else - CheckPointReplicationSlots(false); + CheckPointRelationMap(); + CheckPointReplicationSlots(flags & CHECKPOINT_IS_SHUTDOWN); + CheckPointSnapBuild(); + CheckPointLogicalRewriteHeap(); + CheckPointReplicationOrigin(); } /* From 21f9464cb5aff9cfbdff0d035c3b2929d22574e6 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Tue, 3 Dec 2024 17:39:01 +0200 Subject: [PATCH 2/3] Fix int->bool conversion --- src/backend/access/transam/xlog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 280f66696c8..38356312797 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7994,7 +7994,7 @@ static void CheckPointReplicationState(int flags) { CheckPointRelationMap(); - CheckPointReplicationSlots(flags & CHECKPOINT_IS_SHUTDOWN); + CheckPointReplicationSlots((flags & CHECKPOINT_IS_SHUTDOWN) != 0); CheckPointSnapBuild(); CheckPointLogicalRewriteHeap(); CheckPointReplicationOrigin(); From 7e3f3974bc8895938308f94d0e96879ffae638cd Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Tue, 10 Dec 2024 19:11:45 +0200 Subject: [PATCH 3/3] Prevent duble call of CheckPointReplicationState --- src/backend/access/transam/xlog.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 38356312797..0c0a737f271 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8021,7 +8021,8 @@ PreCheckPointGuts(int flags) static void CheckPointGuts(XLogRecPtr checkPointRedo, int flags) { - CheckPointReplicationState(flags); + if (!(flags & CHECKPOINT_IS_SHUTDOWN)) + CheckPointReplicationState(flags); /* Write out all dirty data in SLRUs and the main buffer pool */ TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(flags);