On 5/30/17 13:25, Masahiko Sawada wrote: > However there is one more problem here; if the relation status entry > is deleted while corresponding table sync worker is waiting to be > changed its status, the table sync worker can be orphaned in waiting > status. In this case, should table sync worker check the relation > status and exits if the relation status record gets removed? Or should > ALTER SUBSCRIPTION update status of table sync worker to UNKNOWN?
I think this would be fixed with the attached patch. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From f34ed996af298d731551695da562d17be5d6b248 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <pete...@gmx.net> Date: Fri, 9 Jun 2017 09:47:52 -0400 Subject: [PATCH] Stop table sync workers when subscription relation entry is removed When a table sync worker is in waiting state and the subscription table entry is removed because of a concurrent subscription refresh, the worker could be left orphaned. To avoid that, explicitly stop the worker when the pg_subscription_rel entry is removed. Reported-by: Masahiko Sawada <sawada.m...@gmail.com> --- src/backend/commands/subscriptioncmds.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 49737a9042..8ec8742480 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -600,6 +600,8 @@ AlterSubscription_refresh(Subscription *sub, bool copy_data) RemoveSubscriptionRel(sub->oid, relid); + logicalrep_worker_stop(sub->oid, relid); + namespace = get_namespace_name(get_rel_namespace(relid)); ereport(NOTICE, (errmsg("removed subscription for table %s.%s", -- 2.13.1
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers