Re: timeout on lock feature
От | Bruce Momjian |
---|---|
Тема | Re: timeout on lock feature |
Дата | |
Msg-id | 200104091748.NAA13080@candle.pha.pa.us обсуждение исходный текст |
Ответ на | timeout on lock feature ("Henryk Szal" <szal@doctorq.com.pl>) |
Ответы |
Re: timeout on lock feature
|
Список | pgsql-hackers |
I can imagine some people wanting this. However, 7.1 has new deadlock detection code, so I would you make a 7.1 version and send it over. We can get it into 7.2. I think we need a SET variable, and it should default to OFF. Good idea. Thanks. > Hi, > > I implement additional server functionality. Currently (v7.0.3), executing > SQL update statement on the same > row from inside two different processess results in blocking second process > to the end of transaction in > the first one. In real OLTP application second process can't wait too long. > After few seconds server should > return to the application message:'lock timeout exceeded'. I modify postgres > lock manager source code to > obtain that functionality. I take advantage of deadlock detection mechanism. > Currently deadlock > detection routine initialy check for simple deadlock detection between two > processess, next insert lock > into lock queue and after DEADLOCK_CHECK_TIMER seconds run HandleDeadLock to > comprehensive deadlock detection. > To obtain 'timeout on lock' feature I do as follow: > > 1. Add new configure parameter. Currently I add #define statement in file > include/config.in > #define NO_WAIT_FOR_LOCK 1 > In the future somebody can add new option to SQL SET command > > 2. Modify HandleDeadLock routine. In file backend/storage/lmgr/proc.c change > lines 866-870 > > if (!DeadLockCheck(MyProc, MyProc->waitLock)) > { > UnlockLockTable(); > return; > } > > to > > if (!NO_WAIT_FOR_LOCK) > { > if (!DeadLockCheck(MyProc, MyProc->waitLock)) > { > UnlockLockTable(); > return; > } > } > > With this modyfication every conflicting lock wait DEADLOCK_CHECK_TIMER > seconds in queue and returns with error > 'deadlock detect'. > > Who can add this simply 'timeout on lock' implementation to the next > postgres server release? > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
В списке pgsql-hackers по дате отправления: