vacuum hint on elog
От
Neil Conway
Тема
vacuum hint on elog
Дата
Msg-id
41F24704.6050705@samurai.com
Список
Дерево обсуждения
vacuum hint on elog Neil Conway <neilc@samurai.com>
Re: vacuum hint on elog Alvaro Herrera <alvherre@dcc.uchile.cl>
Re: vacuum hint on elog Neil Conway <neilc@samurai.com>
Re: vacuum hint on elog Tom Lane <tgl@sss.pgh.pa.us>
Re: vacuum hint on elog Neil Conway <neilc@samurai.com>
Re: vacuum hint on elog Tom Lane <tgl@sss.pgh.pa.us>
It occurred to me that if we elog(ERROR) during VACUUM, the vacuum activity hint will not be reset. This will result in all subsequent I/O by the current backend being treated by the bufmgr as though it resulted from VACUUM. While elog(ERROR) during VACUUM is not a common occurrence, I don't think it's wise to assume it is impossible. Attached is a patch which resets the vacuum activity hint in AbortTransaction(). Barring any objections, I intend to apply this to REL8_0_STABLE and HEAD sometime on Monday. -Neil Index: src/backend/access/transam/xact.c =================================================================== RCS file: /Users/neilc/local/cvs/pgsql/src/backend/access/transam/xact.c,v retrieving revision 1.195 diff -c -r1.195 xact.c *** src/backend/access/transam/xact.c 31 Dec 2004 21:59:29 -0000 1.195 --- src/backend/access/transam/xact.c 22 Jan 2005 12:07:16 -0000 *************** *** 32,37 **** --- 32,38 ---- #include "executor/spi.h" #include "libpq/be-fsstubs.h" #include "miscadmin.h" + #include "storage/buf_internals.h" #include "storage/fd.h" #include "storage/proc.h" #include "storage/sinval.h" *************** *** 1606,1611 **** --- 1607,1621 ---- */ LWLockReleaseAll(); + /* + * Reset the VACUUM activity hint. If we did elog(ERROR) during + * VACUUM, this might still be set to true, so reset it here. For + * the sake of correctness, we make sure to reset the flag fairly + * early, before we've done any I/O that may be required for txn + * abort. + */ + StrategyHintVacuum(false); + /* Clean up buffer I/O and buffer context locks, too */ AbortBufferIO(); UnlockBuffers();
В списке pgsql-patches по дате отправления