Re: logical replication launcher crash on buildfarm

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Cc: Robert Haas <robertmhaas@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Petr Jelinek <petr@2ndquadrant.com>, Peter Eisentraut <peter_e@gmx.net>
Date: 2017-03-28T02:04:22Z
Lists: pgsql-hackers
On 2017-03-28 03:47:50 +0200, Petr Jelinek wrote:
> On 28/03/17 03:31, Petr Jelinek wrote:
> > On 27/03/17 19:01, Robert Haas wrote:
> >> On Mon, Mar 27, 2017 at 12:50 PM, Andres Freund <andres@anarazel.de> wrote:
> >>> Robert, Petr, either of you planning to fix this (as outlined elsewhere
> >>> in the thred)?
> >>
> >> Oh, I didn't realize anybody was looking to me to fix this.  I sort of
> >> thought that it was fallout from the logical replication patch and
> >> that Petr or Peter would deal with it.  If that's not the case, I'm
> >> not totally unwilling to take a whack at it, but I don't have much
> >> personal enthusiasm for trying to figure out how to make dynamic
> >> loading on the postgres binary itself work everywhere, so if it falls
> >> to me to fix, it's likely to get a hard-coded check for some
> >> hard-coded name.
> >>
> > 
> > It affects parallel workers same way, I'll write patch for HEAD soon,
> > 9.6 probably with some delay. I'll expand the InternalBgWorkers thing
> > that was added with logical replication to handle this in similar
> > fashion how we do fmgrtab.
> > 
> 
> Btw now that I look at the code, I guess we'll want to get rid of
> bgw_main completely in HEAD given that we can't guarantee it will be
> valid even for shared_preload_library libraries. For older branches I
> would leave things as they are in this regard as there don't seem to be
> any immediate issue for standard binaries.

As long as you fix it so culicidae is happy (in 9.6) ;).  I think it's
fine to just introduce bgw_builtin_id or such, and leave the bgw_main
code in place in < HEAD.


Greetings,

Andres Freund


Commits

  1. Avoid passing function pointers across process boundaries.

  2. Don't use bgw_main even to specify in-core bgworker entrypoints.