1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-15 05:46:52 +03:00

Prohibit max_slot_wal_keep_size to value other than -1 during upgrade.

We don't want existing slots in the old cluster to get invalidated during
the upgrade. During an upgrade, we set this variable to -1 via the command
line in an attempt to prevent such invalidations, but users have ways to
override it. This patch ensures the value is not overridden by the user.

Author: Kyotaro Horiguchi
Reviewed-by: Peter Smith, Alvaro Herrera
Discussion: http://postgr.es/m/20231027.115759.2206827438943188717.horikyota.ntt@gmail.com
This commit is contained in:
Amit Kapila
2023-11-10 08:45:01 +05:30
parent 5ba1ac99a8
commit 8bfb231b43
4 changed files with 27 additions and 12 deletions

View File

@@ -2063,6 +2063,25 @@ check_wal_segment_size(int *newval, void **extra, GucSource source)
return true;
}
/*
* GUC check_hook for max_slot_wal_keep_size
*
* We don't allow the value of max_slot_wal_keep_size other than -1 during the
* binary upgrade. See start_postmaster() in pg_upgrade for more details.
*/
bool
check_max_slot_wal_keep_size(int *newval, void **extra, GucSource source)
{
if (IsBinaryUpgrade && *newval != -1)
{
GUC_check_errdetail("\"%s\" must be set to -1 during binary upgrade mode.",
"max_slot_wal_keep_size");
return false;
}
return true;
}
/*
* At a checkpoint, how many WAL segments to recycle as preallocated future
* XLOG segments? Returns the highest segment that should be preallocated.