On Fri, Jul 30, 2021 at 10:00 PM Etsuro Fujita <etsuro.fujita@gmail.com> wrote:
> On Fri, Jul 30, 2021 at 9:45 PM Michael Paquier <michael@paquier.xyz> wrote:
> > On Fri, Jul 30, 2021 at 08:08:07AM +0000, Etsuro Fujita wrote:
> > > postgres_fdw: Fix handling of pending asynchronous requests.
> >
> > You have angered many members of the buildfarm here, like:
> I’ll look into this.
Buildfarm members are causing this assertion failure:
TRAP: FailedAssertion("fsstate->conn_state->pendingAreq == areq",
File: "/home/pgbf/buildroot/HEAD/pgsql.build/../pgsql/contrib/postgres_fdw/postgres_fdw.c",
Line: 6900, PID: 744110)
I couldn’t reproduce this in my environment, but I noticed this, which
didn’t happen in my environment: the case of delivering notifications
to both of the parent async-capable nodes in ExecAppendAsyncEventWait
when processing the added test case query. In that case, doing
postgresForeignAsyncNotify for the first parent async-capable node
would invoke process_pending_request on the second one when executing
its initplan, which would lead to the assertion failure when doing
postgresForeignAsyncNotify for the second one. :-( I think
postgresForeignAsyncNotify would need the same treatment as for
postgresForeignAsyncConfigureWait, like the attached.
Best regards,
Etsuro Fujita