Re: Bug in ALTER SUBSCRIPTION ... SERVER / ... CONNECTION with broken old server

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Jeff Davis <pgsql(at)j-davis(dot)com>
Cc: "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>, Ajin Cherian <itsajin(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in ALTER SUBSCRIPTION ... SERVER / ... CONNECTION with broken old server
Date: 2026-07-13 05:51:55
Message-ID: CAA4eK1+c3M8Qmq+=CLvHx6c0MctnZ2j_AjHhCCHANkQ06ZK6YQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Jul 11, 2026 at 8:42 PM Jeff Davis <pgsql(at)j-davis(dot)com> wrote:
>
> On Thu, 2026-07-09 at 12:47 +0530, Amit Kapila wrote:
> > That sounds like an appropriate solution or we can use (connect =
> > false) option as well a way to indicate NOCONNECT.
>
> That doesn't have a separate state in the catalog, so DROP SUBSCRIPTION
> doesn't know that it was specified.
>

I was imagining doing something what CREATE SUBSCRIPTION doc describes
for this option: "Specifies whether the CREATE SUBSCRIPTION command
should connect to the publisher at all.". I mean some sort of WITH
(connect = false) but on re-thinking, for DROP it is better to use a
clause like NOCONNECT instead of providing options. Anyway, we can
brainstorm on the exact syntax in a separate thread for this work.

> > Yeah, we can do this but if we want to change this behaviour in the
> > next version, isn't it better to tweak the doc wording as:"After
> > that,
> > DROP SUBSCRIPTION will not attempt to drop the subscription's own
> > replication slot. It may still connect to the publisher to drop
> > internally-created table synchronization slots if some table
> > synchronization was left unfinished; if the publisher is unreachable,
> > those slots (and the main slot, if it still exists) must be dropped
> > manually.".
>
> Right, we can make the documentation match the code instead of making
> the code match the documentation. I don't have a strong opinion which
> way to go. But the wording above is fine with me.
>

Fair enough. So, I'll commit this to HEAD and backbaptch till PG14.

> > I think in most cases where we need this is where the
> > publisher is not available or the network is broken and in those
> > cases, the current code still works and won't leave any tablesync
> > slots.
>
> If it can't connnect, then the tablesync slots could still be left
> behind, right?
>

Yes. I think I wanted to say in such situations "the DROP completes,
but the tablesync slots are left on the publisher for manual
cleanup.". Sorry for confusion.

--
With Regards,
Amit Kapila.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2026-07-13 06:06:20 Re: PSQL - prevent describe listing tables that are already in listed schemas
Previous Message shveta malik 2026-07-13 05:37:54 Re: sequencesync worker race with REFRESH SEQUENCES