DROP SUBSCRIPTION and ROLLBACK

From: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: DROP SUBSCRIPTION and ROLLBACK
Date: 2017-02-07 12:10:16
Message-ID: CAD21AoD+VO93zZ4ZQtZQb-jZ_wMko3OgGdx1MXO4T+8q_zHDDA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi all,

While testing logical replciation I found that if the transaction
issued DROP SUBSCRIPTION rollbacks then the logical repliation stops
and the subscription can never be removed later. The document says
that the replication worker associated with the subscription will not
stop until after the transaction that issued this command has
committed but it doesn't work.

The cause of this is that DropSubscription stops the apply worker and
drops corresponding replication slot on publisher side without waiting
for commit or rollback. The launcher process launches the apply worker
again but the launched worker will fail to start logical replication
because corresponding replication slot is already removed. And the
orphan subscription can not be removed later.

I think the logical replication should not stop and the corresponding
replication slot and replication origin should not be removed until
the transaction commits.

The solution for this I came up with is that the launcher process
stops the apply worker after DROP SUBSCRIPTION is committed rather
than DropSubscription does. And the apply worker drops replication
slot and replication origin before exits. Attached draft patch fixes
this issue.

Please give me feedback.

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Attachment Content-Type Size
drop_subscription_and_rollback.patch application/octet-stream 11.3 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bernd Helmle 2017-02-07 12:16:50 Re: LWLock optimization for multicore Power machines
Previous Message Pavan Deolasee 2017-02-07 12:03:56 Re: [COMMITTERS] pgsql: Release note updates.