diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c index 93a42d9322c..b10857550a6 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,