elog levels for _redo failures

Started by Simon Riggsabout 18 years ago3 messages
#1Simon Riggs
simon@2ndquadrant.com

I notice that there is some variation in the way that different rmgrs
use elog levels.

Heap uses PANIC always
BTree uses LOG and PANIC
GIN uses ERROR always
GIST uses ERROR always

Btree issues a LOG during forget_matching_split(), but does nothing
during forget_matching_deletion().

GIN and GIST now don't issue any elog at all when they cannot find a
matching split. GIN doesn't complain if it cannot cleanup correctly,
while GIST does.

Is there a particular reason or benefit for this much variation in the
code paths for each rmgr? Why do the log levels vary?

I'm thinking that index rmgr log levels should be either LOG or PANIC,
in this release, plus I would expect to see some more LOGs for when
things don't work right. Or is there no need to PANIC? ;-)

--
Simon Riggs
2ndQuadrant http://www.2ndQuadrant.com

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Simon Riggs (#1)
Re: elog levels for _redo failures

Simon Riggs <simon@2ndquadrant.com> writes:

I notice that there is some variation in the way that different rmgrs
use elog levels.

Heap uses PANIC always
BTree uses LOG and PANIC
GIN uses ERROR always
GIST uses ERROR always

Is there a particular reason or benefit for this much variation in the
code paths for each rmgr? Why do the log levels vary?

There really isn't any difference between ERROR and PANIC in this
context: any error is going to result in startup failure (cf. elog.c's
behavior when there is no exception catcher). I think that the older rmgr
code may have been written using PANIC to make it more obvious that that
would happen, but it doesn't matter. Not sure if there's much point in
trying to standardize.

The stuff that is LOG should perhaps be reduced to DEBUG1 --- I doubt
that it has any non-debugging purpose.

regards, tom lane

#3Simon Riggs
simon@2ndquadrant.com
In reply to: Tom Lane (#2)
Re: elog levels for _redo failures

On Tue, 2007-11-20 at 14:46 -0500, Tom Lane wrote:

Simon Riggs <simon@2ndquadrant.com> writes:

I notice that there is some variation in the way that different rmgrs
use elog levels.

Heap uses PANIC always
BTree uses LOG and PANIC
GIN uses ERROR always
GIST uses ERROR always

Is there a particular reason or benefit for this much variation in the
code paths for each rmgr? Why do the log levels vary?

There really isn't any difference between ERROR and PANIC in this
context: any error is going to result in startup failure (cf. elog.c's
behavior when there is no exception catcher). I think that the older rmgr
code may have been written using PANIC to make it more obvious that that
would happen, but it doesn't matter.

That's what I thought.

Not sure if there's much point in
trying to standardize.

OK, as long its a conscious decision.

We'll need to be more careful in 8.4. I'd suggest indexes at ERROR and
heap at PANIC.

The stuff that is LOG should perhaps be reduced to DEBUG1 --- I doubt
that it has any non-debugging purpose.

I'd rather keep seeing it. Only bugs should show up, so I'd like to see
them in the log if the server crashes.

I'm still worried about the code that doesn't LOG at all, but if you're
not worried then I'll let that rest.

--
Simon Riggs
2ndQuadrant http://www.2ndQuadrant.com