From c25304a945467f6edfcca10d7931b913776d066b Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 6 Apr 2018 09:07:09 -0400 Subject: [PATCH] Improve messaging during logical replication worker startup In case the subscription is removed before the worker is fully started, give a specific error message instead of the generic "cache lookup" error. Author: Petr Jelinek Reviewed-by: Masahiko Sawada --- src/backend/replication/logical/worker.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c index 93a42d9322..b10857550a 100644 --- a/src/backend/replication/logical/worker.c +++ b/src/backend/replication/logical/worker.c @@ -1553,14 +1553,20 @@ ApplyWorkerMain(Datum main_arg) ALLOCSET_DEFAULT_SIZES); StartTransactionCommand(); oldctx = MemoryContextSwitchTo(ApplyContext); - MySubscription = GetSubscription(MyLogicalRepWorker->subid, false); + + MySubscription = GetSubscription(MyLogicalRepWorker->subid, true); + if (!MySubscription) + { + ereport(LOG, + (errmsg("logical replication apply worker for subscription %u will not " + "start because the subscription was removed during startup", + MyLogicalRepWorker->subid))); + proc_exit(0); + } + MySubscriptionValid = true; MemoryContextSwitchTo(oldctx); - /* Setup synchronous commit according to the user's wishes */ - SetConfigOption("synchronous_commit", MySubscription->synccommit, - PGC_BACKEND, PGC_S_OVERRIDE); - if (!MySubscription->enabled) { ereport(LOG, @@ -1571,6 +1577,10 @@ ApplyWorkerMain(Datum main_arg) proc_exit(0); } + /* Setup synchronous commit according to the user's wishes */ + SetConfigOption("synchronous_commit", MySubscription->synccommit, + PGC_BACKEND, PGC_S_OVERRIDE); + /* Keep us informed about subscription changes. */ CacheRegisterSyscacheCallback(SUBSCRIPTIONOID, subscription_change_cb,