From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Antonin Houska <antonin(dot)houska(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: bgworker crashed or not? |
Date: | 2014-04-16 15:28:03 |
Message-ID: | 20140416152803.GJ17874@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2014-04-16 10:37:12 -0400, Robert Haas wrote:
> On Wed, Apr 16, 2014 at 9:10 AM, Andres Freund <andres(at)2ndquadrant(dot)com> wrote:
> >> Agreed, but after further reflection it seems like if you've declared
> >> a restart interval, then "done until restart interval" is probably the
> >> common case. So how about
> >>
> >> exit(0) - done until restart interval, or permanently if there is none
> >> exit(1) - done permanently, even if a restart interval was declared
> >> exit(other) - crash
> >>
> >> I don't offhand see a point in an "exit and restart immediately" case.
> >> Why exit at all, if you could just keep running? If you *can't* just
> >> keep running, it probably means you know you've bollixed something,
> >> so that the crash case is probably what to do anyway.
> >
> > There's the case where you want to quickly go over all the databases,
> > but only use one bgworker for it. I don't think there's another way to
> > do that.
> >
> > I think we really should bite the bullet and change this before 9.4
> > comes out. The current static bgworker facility has only been out there
> > for one release, and dynamic bgworkers aren't released yet at all. If we
> > wait with this for 9.5, we'll annoy many more people.
>
> So, exactly what do you want to change? If you want to keep the
> restart-immediately behavior, then that argues for NOT changing
> exit(0).
I don't neccessarily want to keep that behaviour. It can be emulated
easily enough by setting the restart interval to 0. I just wanted to
explain that it's not completely unreasonable to want such a short
restart interval.
> I actually think the right answer here might be to give background
> workers a way to change their configured restart interval. We've
> already got a shared memory area that the postmaster reads to know how
> what to do when starting a dynamic background worker, so it probably
> wouldn't be that hard. But I'm not volunteering to undertake that on
> April 16th.
That seems like a separate feature - and I don't see a need to rush that
into 9.4. All I want that if we decide to change the API, we should do
it now.
What I dislike about the status quo is that the
1) The regular exit(0) behaves all but regular.
2) The only way to regularly exit is logged as a failure. Thus there's
no real way to flag a failure that's actually a failure.
So I think your proposal above already is an improvement upon the status
quo. Maybe we also should change the logging of bgworker exits.
I think we probably also need a way to exit that's treated as an error,
but doesn't lead to a PANIC restart.
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2014-04-16 15:28:04 | Re: Clock sweep not caching enough B-Tree leaf pages? |
Previous Message | Bruce Momjian | 2014-04-16 15:22:28 | Re: [BUG FIX] Compare returned value by socket() against PGINVALID_SOCKET instead of < 0 |