From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Subject: [PATCH v2] Fix incorrect calculation regarding max_slot_wal_keep_size
Date: Thu, 20 Apr 2023 11:51:10 +0900
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 | 8 ++++++++
1 file changed, 8 insertions(+)
inline patch 1: src/backend/access/transam/xlog.c (+8/-0 lines) download inline-1.patchdiff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.cindex 63481d826f..bda859c299 100644--- a/src/backend/access/transam/xlog.c+++ b/src/backend/access/transam/xlog.c@@ -7463,6 +7463,14 @@ KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo)
{
XLByteToSeg(keep, segno, wal_segment_size);
+ /*+ * Slot minimum LSN could be greater than recptr. In such cases, no+ * segments are protected by slots but we still need to keep segno in a+ * reasonable range for subsequent calculations to avoid underflow.+ */+ if (segno > currSegNo)+ segno = currSegNo;+
/* Cap by max_slot_wal_keep_size ... */
if (max_slot_wal_keep_size_mb >= 0)
{
--
2.31.1
----Next_Part(Thu_Apr_20_17_58_14_2023_063)----
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: horikyota.ntt@gmail.com
Subject: Re: [PATCH v2] Fix incorrect calculation regarding max_slot_wal_keep_size
In-Reply-To: <no-message-id-27256@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
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