From 58dc0e41ab67f185240a164e1906c389dfc7502e Mon Sep 17 00:00:00 2001 From: Anastasia Lubennikova Date: Thu, 26 Dec 2024 14:36:28 +0000 Subject: [PATCH] Add new GUC disable_logical_replication_subscribers --- src/backend/replication/logical/launcher.c | 11 +++++++++++ src/include/replication/logicallauncher.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c index 27c3a91fb75..48c7cf39422 100644 --- a/src/backend/replication/logical/launcher.c +++ b/src/backend/replication/logical/launcher.c @@ -51,6 +51,8 @@ int max_logical_replication_workers = 4; int max_sync_workers_per_subscription = 2; int max_parallel_apply_workers_per_subscription = 2; +bool disable_logical_replication_subscribers = false; /* NEON: GUC is defined in neon extension */ + LogicalRepWorker *MyLogicalRepWorker = NULL; typedef struct LogicalRepCtxStruct @@ -333,6 +335,15 @@ logicalrep_worker_launch(LogicalRepWorkerType wtype, (errcode(ERRCODE_CONFIGURATION_LIMIT_EXCEEDED), errmsg("cannot start logical replication workers when max_replication_slots = 0"))); + /* NEON GUC that allows to control logical replication without postgres restart */ + if (disable_logical_replication_subscribers) + { + ereport(WARNING, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("cannot start logical replication workers when disable_logical_replication_subscribers=true"))); + return false; + } + /* * We need to do the modification of the shared memory under lock so that * we have consistent view. diff --git a/src/include/replication/logicallauncher.h b/src/include/replication/logicallauncher.h index ff0438b5bb7..bb49f05dd6f 100644 --- a/src/include/replication/logicallauncher.h +++ b/src/include/replication/logicallauncher.h @@ -16,6 +16,8 @@ extern PGDLLIMPORT int max_logical_replication_workers; extern PGDLLIMPORT int max_sync_workers_per_subscription; extern PGDLLIMPORT int max_parallel_apply_workers_per_subscription; +extern PGDLLIMPORT bool disable_logical_replication_subscribers; + extern void ApplyLauncherRegister(void); extern void ApplyLauncherMain(Datum main_arg);