Good afternoon! 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? Many thanks! Jeremy