Re: Why is src/test/modules/committs/t/002_standby.pl flaky?

Поиск
Список
Период
Сортировка
Искать
От
Thomas Munro
Тема
Re: Why is src/test/modules/committs/t/002_standby.pl flaky?
Дата
Msg-id
CA+hUKGLm-cgWDoGzj9Y=3SPKyWhvPCXXwnhUtv=2ePcLwWSbrA@mail.gmail.com
Ответ на
Список
Дерево обсуждения
Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andrew Dunstan <andrew@dunslane.net>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andres Freund <andres@anarazel.de>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Noah Misch <noah@leadboat.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Tom Lane <tgl@sss.pgh.pa.us>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Thomas Munro <thomas.munro@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Alexander Lakhin <exclusion@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Peter Smith <smithpb2250@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? vignesh C <vignesh21@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Robert Haas <robertmhaas@gmail.com>
Re: Why is src/test/modules/committs/t/002_standby.pl flaky? Andrew Dunstan <andrew@dunslane.net>
On Sat, Jan 15, 2022 at 9:47 AM Andres Freund  wrote:
> Walreceiver only started using WES in
> 2016-03-29 [314cbfc5d] Add new replication mode synchronous_commit = 'remote_ap
>
> With that came the following comment:
>
>                 /*
>                  * Ideally we would reuse a WaitEventSet object repeatedly
>                  * here to avoid the overheads of WaitLatchOrSocket on epoll
>                  * systems, but we can't be sure that libpq (or any other
>                  * walreceiver implementation) has the same socket (even if
>                  * the fd is the same number, it may have been closed and
>                  * reopened since the last time).  In future, if there is a
>                  * function for removing sockets from WaitEventSet, then we
>                  * could add and remove just the socket each time, potentially
>                  * avoiding some system calls.
>                  */
>                 Assert(wait_fd != PGINVALID_SOCKET);
>                 rc = WaitLatchOrSocket(MyLatch,
>                                        WL_EXIT_ON_PM_DEATH | WL_SOCKET_READABLE |
>                                        WL_TIMEOUT | WL_LATCH_SET,
>                                        wait_fd,
>                                        NAPTIME_PER_CYCLE,
>                                        WAIT_EVENT_WAL_RECEIVER_MAIN);
>
> I don't really see how libpq could have changed the socket underneath us, as
> long as we get it the first time after the connection successfully was
> established?  I mean, there's a running command that we're processing the
> result of?

Erm, I didn't analyse the situation much back then, I just knew that
libpq could reconnect in early phases.  I can see that once you reach
that stage you can count on socket stability though, so yeah that
should work as long as you can handle it correctly in the earlier
connection phase (probably using the other patch I posted and
Alexander tested), it should all work nicely.  You'd probably want to
formalise the interface/documentation on that point.

> Nor do I understand what "any other walreceiver implementation"
> refers to?

I think I meant that it goes via function pointers to talk to
libpqwalreceiver.c, but I know now that we don't actually support
using that to switch to different code, it's just a solution to a
backend/frontend linking problem.  The comment was probably just
paranoia based on the way the interface works.


В списке pgsql-hackers по дате отправления
От: Thomas Munro
Дата:
От: James Coleman
Дата:
FAQ