diff options
author | Fujii Masao <fujii@postgresql.org> | 2020-07-20 13:30:18 +0900 |
---|---|---|
committer | Fujii Masao <fujii@postgresql.org> | 2020-07-20 13:30:18 +0900 |
commit | c3fe108c025e4a080315562d4c15ecbe3f00405e (patch) | |
tree | b70e9db2e58fedb9abd6506574629f1e5ca75386 /src/backend/replication/slotfuncs.c | |
parent | 0bead9af484c1d0a67e690fda47011addaa5bc9d (diff) |
Rename wal_keep_segments to wal_keep_size.
max_slot_wal_keep_size that was added in v13 and wal_keep_segments are
the GUC parameters to specify how much WAL files to retain for
the standby servers. While max_slot_wal_keep_size accepts the number of
bytes of WAL files, wal_keep_segments accepts the number of WAL files.
This difference of setting units between those similar parameters could
be confusing to users.
To alleviate this situation, this commit renames wal_keep_segments to
wal_keep_size, and make users specify the WAL size in it instead of
the number of WAL files.
There was also the idea to rename max_slot_wal_keep_size to
max_slot_wal_keep_segments, in the discussion. But we have been moving
away from measuring in segments, for example, checkpoint_segments was
replaced by max_wal_size. So we concluded to rename wal_keep_segments
to wal_keep_size.
Back-patch to v13 where max_slot_wal_keep_size was added.
Author: Fujii Masao
Reviewed-by: Álvaro Herrera, Kyotaro Horiguchi, David Steele
Discussion: https://postgr.es/m/574b4ea3-e0f9-b175-ead2-ebea7faea855@oss.nttdata.com
Diffstat (limited to 'src/backend/replication/slotfuncs.c')
-rw-r--r-- | src/backend/replication/slotfuncs.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c index 9fe147bf44e..f88694672fb 100644 --- a/src/backend/replication/slotfuncs.c +++ b/src/backend/replication/slotfuncs.c @@ -413,19 +413,20 @@ pg_get_replication_slots(PG_FUNCTION_ARGS) else { XLogSegNo targetSeg; - XLogSegNo keepSegs; + uint64 slotKeepSegs; + uint64 keepSegs; XLogSegNo failSeg; XLogRecPtr failLSN; XLByteToSeg(slot_contents.data.restart_lsn, targetSeg, wal_segment_size); - /* determine how many segments slots can be kept by slots ... */ - keepSegs = XLogMBVarToSegs(max_slot_wal_keep_size_mb, wal_segment_size); - /* ... and override by wal_keep_segments as needed */ - keepSegs = Max(keepSegs, wal_keep_segments); + /* determine how many segments slots can be kept by slots */ + slotKeepSegs = XLogMBVarToSegs(max_slot_wal_keep_size_mb, wal_segment_size); + /* ditto for wal_keep_size */ + keepSegs = XLogMBVarToSegs(wal_keep_size_mb, wal_segment_size); /* if currpos reaches failLSN, we lose our segment */ - failSeg = targetSeg + keepSegs + 1; + failSeg = targetSeg + Max(slotKeepSegs, keepSegs) + 1; XLogSegNoOffsetToRecPtr(failSeg, 0, wal_segment_size, failLSN); values[i++] = Int64GetDatum(failLSN - currlsn); |