From acac68b2bcae818bc8803b8cb8cbb17eee8d5e2b Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 26 Oct 2007 20:45:10 +0000 Subject: Allow an autovacuum worker to be interrupted automatically when it is found to be locking another process (except when it's working to prevent Xid wraparound problems). --- src/include/storage/lock.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/include') diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index 30c8a3fa2bc..005c99ee7dc 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/storage/lock.h,v 1.107 2007/09/05 18:10:48 tgl Exp $ + * $PostgreSQL: pgsql/src/include/storage/lock.h,v 1.108 2007/10/26 20:45:10 alvherre Exp $ * *------------------------------------------------------------------------- */ @@ -442,7 +442,9 @@ typedef enum DS_NOT_YET_CHECKED, /* no deadlock check has run yet */ DS_NO_DEADLOCK, /* no deadlock detected */ DS_SOFT_DEADLOCK, /* deadlock avoided by queue rearrangement */ - DS_HARD_DEADLOCK /* deadlock, no way out but ERROR */ + DS_HARD_DEADLOCK, /* deadlock, no way out but ERROR */ + DS_BLOCKED_BY_AUTOVACUUM /* no deadlock; queue blocked by autovacuum + worker */ } DeadLockState; @@ -495,6 +497,7 @@ extern void lock_twophase_postabort(TransactionId xid, uint16 info, void *recdata, uint32 len); extern DeadLockState DeadLockCheck(PGPROC *proc); +extern PGPROC *GetBlockingAutoVacuumPgproc(void); extern void DeadLockReport(void); extern void RememberSimpleDeadLock(PGPROC *proc1, LOCKMODE lockmode, -- cgit v1.2.3