Skip site navigation (1) Skip section navigation (2)

pgsql: Reduce PANIC to ERROR in some occasionally-reported btree failure

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Reduce PANIC to ERROR in some occasionally-reported btree failure
Date: 2010-08-29 19:33:29
Message-ID: 20100829193329.A1E127541D7@cvs.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-committers
Log Message:
-----------
Reduce PANIC to ERROR in some occasionally-reported btree failure cases.

This patch changes _bt_split() and _bt_pagedel() to throw a plain ERROR,
rather than PANIC, for several cases that are reported from the field
from time to time:
* right sibling's left-link doesn't match;
* PageAddItem failure during _bt_split();
* parent page's next child isn't right sibling during _bt_pagedel().
In addition the error messages for these cases have been made a bit
more verbose, with additional values included.

The original motivation for PANIC here was to capture core dumps for
subsequent analysis.  But with so many users whose platforms don't capture
core dumps by default, or who are unprepared to analyze them anyway, it's hard
to justify a forced database restart when we can fairly easily detect the
problems before we've reached the critical sections where PANIC would be
necessary.  It is not currently known whether the reports of these messages
indicate well-hidden bugs in Postgres, or are a result of storage-level
malfeasance; the latter possibility suggests that we ought to try to be more
robust even if there is a bug here that's ultimately found.

Backpatch to 8.2.  The code before that is sufficiently different that
it doesn't seem worth the trouble to back-port further.

Tags:
----
REL8_4_STABLE

Modified Files:
--------------
    pgsql/src/backend/access/nbtree:
        nbtinsert.c (r1.170.2.1 -> r1.170.2.2)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtinsert.c?r1=1.170.2.1&r2=1.170.2.2)
        nbtpage.c (r1.113 -> r1.113.2.1)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtpage.c?r1=1.113&r2=1.113.2.1)

pgsql-committers by date

Next:From: Tom LaneDate: 2010-08-29 19:33:36
Subject: pgsql: Reduce PANIC to ERROR in some occasionally-reported btree failure
Previous:From: Tom LaneDate: 2010-08-29 19:33:21
Subject: pgsql: Reduce PANIC to ERROR in some occasionally-reported btree failure

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group