Re: timeout on lock feature - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: timeout on lock feature
Date
Msg-id 200104091748.NAA13080@candle.pha.pa.us
Whole thread Raw
In response to timeout on lock feature  ("Henryk Szal" <szal@doctorq.com.pl>)
Responses Re: timeout on lock feature  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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 by date:

Previous
From: Mario Weilguni
Date:
Subject: MySQL vs. Postgres - congratulations to the postgres team
Next
From: Ciaran Johnston
Date:
Subject: Re: Configure problems on Solaris 2.7, pgsql 7.02 and 7.03