pgsql: Maintain valid md.c state when FileClose() fails. - Mailing list pgsql-committers

From Noah Misch
Subject pgsql: Maintain valid md.c state when FileClose() fails.
Date
Msg-id E1iq6bb-0005Ie-5K@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Maintain valid md.c state when FileClose() fails.

FileClose() failure ordinarily causes a PANIC.  Suppose the user
disables that PANIC via data_sync_retry=on.  After mdclose() issued a
FileClose() that failed, calls into md.c raised SIGSEGV.  This fix adds
repalloc() calls during mdclose(); update a comment about ignoring
repalloc() cost.  The rate of relation segment count change is a minor
factor; more relevant to overall performance is the rate of mdclose()
and subsequent re-opening of segments.  Back-patch to v10, where commit
45e191e3aa62d47a8bc1a33f784286b2051f45cb introduced the bug.

Reviewed by Kyotaro Horiguchi.

Discussion: https://postgr.es/m/20191222091930.GA1280238@rfd.leadboat.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/38fc056074e034087af8a1589507631682a279d1

Modified Files
--------------
src/backend/storage/smgr/md.c | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)


pgsql-committers by date:

Previous
From: Peter Geoghegan
Date:
Subject: pgsql: nbtree: Rename BT_HEAP_TID_ATTR.
Next
From: Peter Eisentraut
Date:
Subject: pgsql: Remove STATUS_FOUND