Re: Excessive number of replication slots for 12->14 logical replication

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Ajin Cherian <itsajin(at)gmail(dot)com>
Cc: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>, Hubert Lubaczewski <depesz(at)depesz(dot)com>, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: Excessive number of replication slots for 12->14 logical replication
Date: 2022-08-24 05:54:14
Message-ID: CAA4eK1+gVZ8tSemRudU7gj6B3jYOKNSswH0PhEd+kt068ivnCw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Tue, Aug 23, 2022 at 7:56 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>
> On Thu, Aug 18, 2022 at 11:28 AM Ajin Cherian <itsajin(at)gmail(dot)com> wrote:
> >
> > On Thu, Aug 18, 2022 at 3:46 PM Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> > > Looks good.
> > >
> > > I have one minor comment:
> > >
> > > - * SUBREL_STATE_FINISHEDCOPY. The apply worker can also
> > > - * concurrently try to drop the origin and by this time
> > > - * the origin might be already removed. For these reasons,
> > > - * passing missing_ok = true.
> > > + * SUBREL_STATE_FINISHEDCOPY. So passing missing_ok = true.
> > >
> > > I think we should change "the apply worker" to "the tablesync worker"
> > > but should not remove this sentence. The fact that another process
> > > could concurrently try to drop the origin is still true.
> > >
> > > The rest looks good to me.
> > >
> >
> > Updated as described.
> >
>
> The patch looks good to me though I would like to test it a bit more
> before pushing.
>

While testing/reviewing it further, I noticed that the patch has used
missing_ok as true when dropping origin via tablesync worker. I don't
think that is correct because the concurrent operations that remove
origin like a refresh for the subscription take an access exclusive
lock on pg_subscription which prevent the previous operation to update
the rel state to SUBREL_STATE_SYNCDONE to succeed. So, I think we
should pass missing_ok as false which would be consistent with slot
handling. I have changed that and comments a few places. What do you
think of the attached?

--
With Regards,
Amit Kapila.

Attachment Content-Type Size
v10-0001-Drop-replication-origin-slots-before-tablesync-w.patch application/octet-stream 6.8 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message stefaniamiravalle 2022-08-24 19:27:37 Postgresql data erasure request - from Stefania Miravalle - request: ZN6NRXG3
Previous Message Bryn Llewellyn 2022-08-24 04:19:18 Buggy results from current_role in a "security invoker" trigger function in a multi-owner, "cascade delete via FK" scenario