On Wed, Jan 15, 2014 at 4:32 AM, Robert Haas <robertmh...@gmail.com> wrote:
> On Tue, Jan 14, 2014 at 1:54 PM, Alvaro Herrera
> <alvhe...@2ndquadrant.com> wrote:
>> Robert Haas escribió:
>>> On Tue, Jan 14, 2014 at 12:43 PM, Thom Brown <t...@linux.com> wrote:
>>> > LOG:  worker process: test_shm_mq (PID 22041) exited with exit code 1
>>> > LOG:  unregistering background worker "test_shm_mq"
>>>
>>> This is (perhaps unfortunately) required by the background-worker API.
>>>  When a process exits with code 0, it's immediately restarted
>>> regardless of the restart-time setting.  To get the system to respect
>>> the restart time (in this case, "never") you have to make it exit with
>>> code 1.  It's been like this since the beginning, and I wasn't in a
>>> hurry to change it even though it seems odd to me.  Perhaps we should
>>> revisit that decision.
>>
>> Yeah, it's probably better to do it now rather than waiting.  When this
>> API was invented there wasn't any thought given to the idea of workers
>> that wouldn't be always up.
>
> Well, what do we want the semantics to be, then?  Right now we have this:
>
> 0: restart immediately
> 1: restart based on the restart interval
With a 9.3 bgworker, restart interval is respected if exit code is
non-zero, worker exists immediately in case of ERROR or FATAL with
exit code 1.

> What should we have instead?
>
> I think it might be nice to have an exit code that means "never
> restart, regardless of the restart interval".
I imagine that to be useful, using 2 to avoid breaking currently
existing bgworkers. Perhaps it would be nicer to associate some error
flags directly in the bgworker API with something of the type:
#define BGW_EXIT_RESTART_NOW 0
#define BGW_EXIT_RESTART_INTERVAL 1
#define BGW_EXIT_STOP_FORCE 2
And all the other error codes could point by default to 1.
-- 
Michael


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to