diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-06-09 09:47:52 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-06-12 08:53:37 -0400 |
commit | ddd7b22b225ae41d16ceb218b387645cb9becfdc (patch) | |
tree | 7cb6883325edf9c7f05c8e9fb867f025d38d6476 /src | |
parent | eab86897bd8cbeb21ae8959ca9a095ce7cb663df (diff) | |
download | postgresql-ddd7b22b225ae41d16ceb218b387645cb9becfdc.tar.gz postgresql-ddd7b22b225ae41d16ceb218b387645cb9becfdc.zip |
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.mshk@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/subscriptioncmds.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 49737a90420..8ec87424802 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", |