From 7edff1618e9bd1448c13f2f253d4590d53280ad0 Mon Sep 17 00:00:00 2001 From: Hiroshi Inoue Date: Tue, 9 Jan 2001 09:38:57 +0000 Subject: [PATCH] Disable query cancel during HandleDeadLock(). --- src/backend/storage/lmgr/proc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 406aa35f7c..2730c8811e 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.89 2000/12/22 00:51:54 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.90 2001/01/09 09:38:57 inoue Exp $ * *------------------------------------------------------------------------- */ @@ -48,7 +48,7 @@ * This is so that we can support more backends. (system-wide semaphore * sets run out pretty fast.) -ay 4/95 * - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.89 2000/12/22 00:51:54 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.90 2001/01/09 09:38:57 inoue Exp $ */ #include "postgres.h" @@ -864,7 +864,9 @@ HandleDeadLock(SIGNAL_ARGS) { int save_errno = errno; LOCK *mywaitlock; + bool isWaitingForLock = lockWaiting; /* save waiting status */ + SetWaitingForLock(false); /* disable query cancel during this fuction */ LockLockTable(); /* --------------------- @@ -884,6 +886,7 @@ HandleDeadLock(SIGNAL_ARGS) { UnlockLockTable(); errno = save_errno; + SetWaitingForLock(isWaitingForLock); /* restore waiting status */ return; } @@ -897,6 +900,7 @@ HandleDeadLock(SIGNAL_ARGS) /* No deadlock, so keep waiting */ UnlockLockTable(); errno = save_errno; + SetWaitingForLock(isWaitingForLock); /* restore waiting status */ return; } @@ -911,7 +915,7 @@ HandleDeadLock(SIGNAL_ARGS) SHMQueueElemInit(&(MyProc->links)); MyProc->waitLock = NULL; MyProc->waitHolder = NULL; - lockWaiting = false; + isWaitingForLock = false; /* wait for lock no longer */ /* ------------------ * Unlock my semaphore so that the interrupted ProcSleep() call can finish. -- 2.40.0