Re: How to only auto-restart BGW only on crash or _PG_init

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Jeremy Finzel <finzelj(at)gmail(dot)com>
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>, pglogical-list(at)2ndquadrant(dot)com
Subject: Re: How to only auto-restart BGW only on crash or _PG_init
Date: 2020-03-24 19:12:32
Message-ID: CA+TgmoZFWCsPjbbT1vq3NA6hK7QRrBpOX8Tpk_qnGD6Zs3_Yow@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Mar 24, 2020 at 2:33 PM Jeremy Finzel <finzelj(at)gmail(dot)com> wrote:
> I would be grateful for some direction on how to use Background workers to have a worker automatically restart *only* in certain cases, i.e. on postmaster start (_PG_init) or a soft crash. I run into all sorts of trouble if I set bgw_restart_time to actually restart on sigterm, because in most cases I don't want it to restart (i.e. it was launched with invalid config, the SQL becomes invalid...). But I *do* want it to auto-restart in any kind of crash. If I set bgw_restart_time to never restart, then it doesn't restart after a soft crash, which I want.
>
> This is for my extension pglogical_ticker, and specifically within this main function where a sigterm might happen:
> https://github.com/enova/pglogical_ticker/blob/ef9b68fd6b5b99787034520009577f8cfec0049c/pglogical_ticker.c#L85-L201
>
> I have tried several things unsuccessfully (checking result of SPI_execute or SPI_connect) , usually resulting in a constantly restarting and failing worker. So, is there a straightforward way to only have the worker auto-restart in a very narrow range of cases?

I think what you can do is configure the worker to always restart, but
then have it exit(0) in the cases where you don't want it to restart,
and exit(1) in the cases where you do want it to restart. See:

https://git.postgresql.org/pg/commitdiff/be7558162acc5578d0b2cf0c8d4c76b6076ce352

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2020-03-24 19:13:46 Re: Adding a test for speculative insert abort case
Previous Message Robert Haas 2020-03-24 18:46:39 Re: Add A Glossary