Re: AlterSubscription_refresh "wrconn" wrong variable?

Поиск
Список
Период
Сортировка
От Peter Smith
Тема Re: AlterSubscription_refresh "wrconn" wrong variable?
Дата
Msg-id CAHut+Pv-nZ7-SvFj8V621jhc2Cdk6qDDZdVcJM5aB2d1Z-m79Q@mail.gmail.com
обсуждение исходный текст
Ответ на Re: AlterSubscription_refresh "wrconn" wrong variable?  (Japin Li <japinli@hotmail.com>)
Ответы Re: AlterSubscription_refresh "wrconn" wrong variable?
Re: AlterSubscription_refresh "wrconn" wrong variable?
Список pgsql-hackers
On Thu, May 6, 2021 at 7:18 PM Japin Li <japinli@hotmail.com> wrote:
>
>
> On Thu, 06 May 2021 at 17:08, Peter Smith <smithpb2250@gmail.com> wrote:
> > On Wed, May 5, 2021 at 12:35 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> >>
> >> Peter Smith <smithpb2250@gmail.com> writes:
> >> > This patch replaces the global "wrconn" in AlterSubscription_refresh with a local variable of the same name,
makingit consistent with other functions in subscriptioncmds.c (e.g. DropSubscription).
 
> >> > The global wrconn is only meant to be used for logical apply/tablesync worker.
> >> > Using the global/incorrect wrconn in AlterSubscription_refresh doesn't normally cause any problems, but harm is
stillposslble if the apply worker ever manages to do a subscription refresh. e.g. see [1]
 
> >>
> >> Hm.  I would actually place the blame for this on whoever thought
> >> it was okay to name a global variable something as generic as
> >> "wrconn".   Let's rename that while we're at it, say to something
> >> like "tablesync_wrconn" (feel free to bikeshed).
> >
> > PSA v3 of the patch. Same as before, but now also renames the global
> > variable from "wrconn" to "lrep_worker_wrconn".
> >
>
> Thanks for updating patch. I'm confused why we move the walrcv_connect() out of
> PG_TRY() block?
> +       /* Try to connect to the publisher. */
> +       wrconn = walrcv_connect(sub->conninfo, true, sub->name, &err);
> +       if (!wrconn)
> +               ereport(ERROR,
> +                               (errmsg("could not connect to the publisher: %s", err)));
> +
>         PG_TRY();
>         {
> -               /* Try to connect to the publisher. */
> -               wrconn = walrcv_connect(sub->conninfo, true, sub->name, &err);
> -               if (!wrconn)
> -                       ereport(ERROR,
> -                                       (errmsg("could not connect to the publisher: %s", err)));
> -
>                 /* Get the table list from publisher. */
>                 pubrel_names = fetch_table_list(wrconn, sub->publications);

Thanks for your review. Reason for moving that out of the PG_TRY are:

a) It makes code now consistent with other functions using wrconn. See
CreateSubscription, DropSubscription etc

b) It means don't need the wrconn NULL check anymore in the PG_FINALLY
so it simplifies the disconnect.

------
Kind Regards,
Peter Smith.
Fujitsu Australia



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: Replication slot stats misgivings
Следующее
От: "Pengchengliu"
Дата:
Сообщение: PG 13.2 Parallel scan with SubTransGetTopmostTransaction assert coredump