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 [EMAIL PROTECTED])
> 


-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to