Skip to content

Commit 0ef3eaa

Browse files
MasaoFujiihopebo
authored andcommitted
Avoid unexpected shutdown when sync_replication_slots is enabled.
Previously, enabling sync_replication_slots while wal_level was not set to logical could cause the server to shut down. This was because the postmaster performed a configuration check before launching the slot synchronization worker and raised an ERROR if the settings were incompatible. Since ERROR is treated as FATAL in the postmaster, this resulted in the entire server shutting down unexpectedly. This commit changes the postmaster to log that message with a LOG-level instead of raising an ERROR, allowing the server to continue running even with the misconfiguration. Back-patch to v17, where slot synchronization was introduced. Reported-by: Hugo DUBOIS <[email protected]> Author: Fujii Masao <[email protected]> Reviewed-by: Hugo DUBOIS <[email protected]> Reviewed-by: Shveta Malik <[email protected]> Discussion: https://postgr.es/m/CAH0PTU_pc3oHi__XESF9ZigCyzai1Mo3LsOdFyQA4aUDkm01RA@mail.gmail.com Backpatch-through: 17 (cherry picked from commit f71fa981c96dc5672b0aca671a9898a36fa6d19b)
1 parent c3b44a7 commit 0ef3eaa

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/backend/replication/logical/slotsync.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,14 +1040,14 @@ ValidateSlotSyncParams(int elevel)
10401040
{
10411041
/*
10421042
* Logical slot sync/creation requires wal_level >= logical.
1043-
*
1044-
* Since altering the wal_level requires a server restart, so error out in
1045-
* this case regardless of elevel provided by caller.
10461043
*/
10471044
if (wal_level < WAL_LEVEL_LOGICAL)
1048-
ereport(ERROR,
1045+
{
1046+
ereport(elevel,
10491047
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
10501048
errmsg("replication slot synchronization requires \"wal_level\" >= \"logical\""));
1049+
return false;
1050+
}
10511051

10521052
/*
10531053
* A physical replication slot(primary_slot_name) is required on the

0 commit comments

Comments
 (0)