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

pgsql: Avoid crashing when we have problems unlinking filespost-commit

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Avoid crashing when we have problems unlinking filespost-commit
Date: 2011-12-20 20:01:24
Message-ID: E1Rd5sK-00061i-KT@gemulon.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-committers
Avoid crashing when we have problems unlinking files post-commit.

smgrdounlink takes care to not throw an ERROR if it fails to unlink
something, but that caution was rendered useless by commit
3396000684b41e7e9467d1abc67152b39e697035, which put an smgrexists call in
front of it; smgrexists *does* throw error if anything looks funny, such
as getting a permissions error from trying to open the file.  If that
happens post-commit, you get a PANIC, and what's worse the same logic
appears in the WAL replay code, so the database even fails to restart.

Restore the intended behavior by removing the smgrexists call --- it isn't
accomplishing anything that we can't do better by adjusting mdunlink's
ideas of whether it ought to warn about ENOENT or not.

Per report from Joseph Shraibman of unrecoverable crash after trying to
drop a table whose FSM fork had somehow gotten chmod'd to 000 permissions.
Backpatch to 8.4, where the bogus coding was introduced.

Branch
------
REL9_1_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/a63a7a5b091f8b833169476e8de18100fb1cb73d

Modified Files
--------------
src/backend/access/transam/twophase.c |    3 +--
src/backend/access/transam/xact.c     |   14 ++++----------
src/backend/catalog/storage.c         |    3 +--
src/backend/storage/smgr/md.c         |   26 ++++++++++++++------------
4 files changed, 20 insertions(+), 26 deletions(-)

pgsql-committers by date

Next:From: Tom LaneDate: 2011-12-21 00:57:55
Subject: pgsql: Fix gincostestimate to handle ScalarArrayOpExpr reasonably.
Previous:From: Peter EisentrautDate: 2011-12-19 22:08:28
Subject: pgsql: Add support for privileges on types

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