Re: Race condition in WaitForBackgroundWorkerStartup

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>
Cc: Jeremy Finzel <finzelj(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Race condition in WaitForBackgroundWorkerStartup
Date: 2018-11-14 05:03:11
Message-ID: CAA4eK1JKqk65yJ4Fh1CoV-KBvgYkMZ9XQ6aPZpUsoG+hA3tw2g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Nov 13, 2018 at 11:48 PM Tomas Vondra
<tomas(dot)vondra(at)2ndquadrant(dot)com> wrote:
>
> On Tue, 2018-11-13 at 07:57 -0600, Jeremy Finzel wrote:
> > ...
> >
> > I'm unclear on what counts as "worker initialization". The error is
> > happening in the worker_spi_main function, not in the
> > worker_spi_launch function. So does an immediate error in
> > worker_spi_main count as part of the worker initialization?
> >

Yeah, sort of. Any error you get there can lead to the results you
are seeing. If you want a more robust mechanism, you need to write
something like what we have done for parallel workers (See
WaitForParallelWorkersToAttach.). Basically, you need your workers to
reach a specific state before which if there is any error, the main
backend should error out.

>
> I don't think it does (or should). worker_spi_main is pretty much the
> worker body, and worker initialization pretty much means just "we've
> initialized the worker process (including tracking it in shmem etc.)
> and invoked it's main function".
>
> I'd also argue the behavior is expected to depend on the machine to
> some extent - depending on speed and load the machine may hit the error
> before/after the GetBackgroundWorkerPid call, producing different
> results.
>
> So I'd say the behavior seems correct, at least from this POV.
>

+1.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Noah Misch 2018-11-14 05:34:12 Re: DSM segment handle generation in background workers
Previous Message Thomas Munro 2018-11-14 04:50:26 Re: DSM segment handle generation in background workers