Re: repeated decoding of prepared transactions

Поиск
Список
Период
Сортировка
От Amit Kapila
Тема Re: repeated decoding of prepared transactions
Дата
Msg-id CAA4eK1LE8ZtqtDEGqgk2WYgKAzBysZg_p=dDfPF2MUYhSQEMQQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: repeated decoding of prepared transactions  (Robert Haas <robertmhaas@gmail.com>)
Ответы Re: repeated decoding of prepared transactions  (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>)
Re: repeated decoding of prepared transactions  (Robert Haas <robertmhaas@gmail.com>)
Re: repeated decoding of prepared transactions  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers
On Wed, Feb 10, 2021 at 12:08 AM Robert Haas <robertmhaas@gmail.com> wrote:
>
> On Tue, Feb 9, 2021 at 6:57 AM Amit Kapila <amit.kapila16@gmail.com> wrote:
> > I think similar happens without any of the work done in PG-14 as well
> > if we restart the apply worker before the commit completes on the
> > subscriber. After the restart, we will send the start_decoding_at
> > point based on some previous commit which will make publisher send the
> > entire transaction again. I don't think restart of WAL sender or WAL
> > receiver is such a common thing. It can only happen due to some bug in
> > code or user wishes to stop the nodes or some crash happened.
>
> Really? My impression is that the logical replication protocol is
> supposed to be designed in such a way that once a transaction is
> successfully confirmed, it won't be sent again. Now if something is
> not confirmed then it has to be sent again. But if it is confirmed
> then it shouldn't happen.
>

If by successfully confirmed, you mean that once the subscriber node
has received, it won't be sent again then as far as I know that is not
true. We rely on the flush location sent by the subscriber to advance
the decoding locations. We update the flush locations after we apply
the transaction's commit successfully. Also, after the restart, we use
the replication origin's last flush location as a point from where we
need the transactions and the origin's progress is updated at commit
time.

OTOH, If by successfully confirmed, you mean that once the subscriber
has applied the complete transaction (including commit), then you are
right that it won't be sent again.

-- 
With Regards,
Amit Kapila.



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

Предыдущее
От: Masahiko Sawada
Дата:
Сообщение: Re: New IndexAM API controlling index vacuum strategies
Следующее
От: "Hou, Zhijie"
Дата:
Сообщение: RE: Parallel INSERT (INTO ... SELECT ...)