From 157c293e71cdabd2fb36e3e5ea063ffce5788863 Mon Sep 17 00:00:00 2001 From: Rahila Syed Date: Wed, 10 Sep 2025 15:07:15 +0530 Subject: [PATCH] Remove the validation from the GUC check hook The validation in check_synchronized_standby_slots cannot be run in postmaster and hence can result inconsistent values in some backends that inherit the value from postmaster and those that are started newly. Also, this validation results in parallel workers fail to with error. This causes all the commands run by parallel workers to fail, which seems unnecesary. This validation already happens in StandbySlotsHaveCaughtup() where this GUC is used, so it can be removed from the GUC check. --- src/backend/replication/slot.c | 36 ---------------------------------- 1 file changed, 36 deletions(-) diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index fd0fdb96d42..9daea9ea211 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -2754,42 +2754,6 @@ validate_sync_standby_slots(char *rawname, List **elemlist) { GUC_check_errdetail("List syntax is invalid."); } - else if (MyProc) - { - /* - * Check that each specified slot exist and is physical. - * - * Because we need an LWLock, we cannot do this on processes without a - * PGPROC, so we skip it there; but see comments in - * StandbySlotsHaveCaughtup() as to why that's not a problem. - */ - LWLockAcquire(ReplicationSlotControlLock, LW_SHARED); - - foreach_ptr(char, name, *elemlist) - { - ReplicationSlot *slot; - - slot = SearchNamedReplicationSlot(name, false); - - if (!slot) - { - GUC_check_errdetail("Replication slot \"%s\" does not exist.", - name); - ok = false; - break; - } - - if (!SlotIsPhysical(slot)) - { - GUC_check_errdetail("\"%s\" is not a physical replication slot.", - name); - ok = false; - break; - } - } - - LWLockRelease(ReplicationSlotControlLock); - } return ok; } -- 2.34.1