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

bufmgr and smgr don't talk to each other, apparently

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-hackers(at)postgreSQL(dot)org
Subject: bufmgr and smgr don't talk to each other, apparently
Date: 2000-07-28 22:10:11
Message-ID: 1853.964822211@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackers
I have just noticed something that's been broken for a good long while
(at least since 6.3): bufmgr.c expects that I/O errors will result in
an SM_FAIL return code from the smgr.c routines, but smgr.c does no
such thing: it does elog(ERROR) if it sees a failure.  All of the
"error handling" paths in bufmgr.c are dead code and have been since
at least 6.3.

It seems to me that we should either reduce smgr.c's elog()s to NOTICEs,
or rip out all of the dead code in bufmgr.c.  I'm inclined to the
latter, since the former seems likely to create new bugs.

I'm also thinking that AbortBufferIO is *way* overstepping its authority
by forcing a postmaster restart if it notices a double write failure.
The dirty buffer is a problem, no doubt, but this solution looks like
urban renewal via A-bomb.  I'd rather just keep failing anytime some
transaction tries to write the buffer --- better that than taking out
all active transactions whether they'd ever touched that buffer or not.
If the write failure really is permanent, the dbadmin would eventually
have to intervene via a manual restart, but a manual restart at the time
of the dbadmin's choosing seems better than forcing a failure under
load.

Comments?

			regards, tom lane

Responses

pgsql-hackers by date

Next:From: Hiroshi InoueDate: 2000-07-28 22:35:58
Subject: RE: Fwd: Postgres update
Previous:From: Malcolm BeattieDate: 2000-07-28 20:53:34
Subject: Re: Security choices...

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