pg.ddx.io pgsql-bugs@postgresql.org mailing list archive
help / color / mirror / Atom feed[PATCH] Fix incorrect calculation regarding max_slot_wal_keep_size
1+ messages / 1 participants
[nested] [flat]
* [PATCH] Fix incorrect calculation regarding max_slot_wal_keep_size
@ 2023-04-20 02:51 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 1+ messages in thread
From: Kyotaro Horiguchi @ 2023-04-20 02:51 UTC (permalink / raw)
The calculation in KeepLogSeg related to max_slot_wal_keep_size can
result in unexpected behavior when replication advances quickly, and
the checkpointer is delayed just before removing WAL files.
---
src/backend/access/transam/xlog.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
inline patch 1: src/backend/access/transam/xlog.c (+5/-2 lines) download inline-1.patch
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 63481d826f..7bdd4d86b1 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -7463,8 +7463,11 @@ KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo)
{
XLByteToSeg(keep, segno, wal_segment_size);
- /* Cap by max_slot_wal_keep_size ... */
- if (max_slot_wal_keep_size_mb >= 0)
+ /*
+ * Cap by max_slot_wal_keep_size. However this is not required if the
+ * slots alredy won't protect any segments.
+ */
+ if (max_slot_wal_keep_size_mb >= 0 && segno < currSegNo)
{
uint64 slot_keep_segs;
--
2.31.1
----Next_Part(Thu_Apr_20_12_04_17_2023_839)----
^ permalink raw reply [nested|flat] 1+ messages in thread
only message in thread
Thread overview: 1+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2023-04-20 02:51 [PATCH] Fix incorrect calculation regarding max_slot_wal_keep_size Kyotaro Horiguchi <horikyota.ntt@gmail.com>
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox