Re: Dynamic background workers & docs question

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Dynamic background workers & docs question
Date: 2014-03-25 02:36:25
Message-ID: CAB7nPqS+nnHeSbyhFCJ2T8h6yELXBNKEiRoYXwvtpgxPmac+NQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Mar 24, 2014 at 11:03 PM, Magnus Hagander <magnus(at)hagander(dot)net> wrote:
> That's what I thought. Can a dynamic background worker start *another*
> dynamic background worker, or can they only be started from "first level"
> background workers?
I have never really tried by myself, but I don't see any reason why it
wouldn't work as it is only a matter of doing what is for example in
worker_spi_launch:worker_spi.c. Btw, a bgworker could also behave like
a "regular backend" as mentioned in the docs, so a regular backend is
just a subclass of a bgworker :)

>> > Also:
>> > "Background workers are expected to be continuously running; if they
>> > exit
>> > cleanly, postgres will restart them immediately. "
>> >
>> > This doesn't apply to dynamic ones, which we might want to clarify. Do
>> > we
>> > have a "term" for non-dynamic background workers? "static workers"?
>> In the code or the documentation, there is no explicit
>> differentiation, bgworkers are either called plainly "bgworker", or
>> "dynamic bgworker". Perhaps the solution here is simply to say
>> "background workers started by the postmaster are expected blabla".
> That, or we need to invite a term for it?
Hm... Seems like an overkill. The main difference between a
non-dynamic and dynamic bgworker is the way they are registered.
"Static" bgworkers use RegisterBackgroundWorker that can only be
called in _PG_init when a module is loaded with
shared_preload_libraries. Dynamic bgworkers use
RegisterDynamicbackgroundWorker. And this differentiation is clearly
done in the 2nd paragraph.

So perhaps the solution here is simply to write "Background workers
registered with RegisterBackgroundWorker are expected...".

I am not a native English speaker, but "static" sounds like a daemon
process that has to restart, and a bgworker could perform a one-time
task as well.
--
Michael

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2014-03-25 03:00:00 Re: About adding a column to an existing system catalog
Previous Message Tanmay Deshpande 2014-03-25 02:20:59 About adding a column to an existing system catalog