Lock freeze ? in MVCC

Поиск
Список
Период
Сортировка
От Hiroshi Inoue
Тема Lock freeze ? in MVCC
Дата
Msg-id 000a01be9060$ea21dae0$2801007e@cadzone.tpf.co.jp
обсуждение исходный текст
Ответы Re: [HACKERS] Lock freeze ? in MVCC  (Bruce Momjian <maillist@candle.pha.pa.us>)
Список pgsql-hackers
Hello all,

The following example causes the hang of concurrent 
transactions(99/04/26 snapshot).

session-1 => create table tt (id int4);

session-1 => begin;
session-1 => insert into tt values (1);

session-2 => begin;
session-2 => insert into tt values (2);

session-3 => begin;
session-3 => lock table tt;    (blocked)

session-1 => update tt set id=1 where id=1;    (blocked)

session-2 => end;

session-2 returns immediately,but session-3 and session-1 
are still blocked 


This phenomenon seems to be caused by LockResolveCon
flicts() or DeadLockCheck().
Both session-1 and session-2 acquire RowExclusive locks 
by insert operations(InitPlan() in execMain.c). 
The AccessExclusive lock of session-3 is queued waiting 
for the release of above locks.
When the update operation of session-1 is executed,the 
second RowExclusive lock is rejected by LockResolve
Conflicts() and queued after the AccessExclusive lock 
of session-3.  
The state is like deadlock but DeadLockCheck() doesn't 
regard the state as deadlock.

Thanks.

Hiroshi Inoue
Inoue@tpf.co.jp


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Todd Graham Lewis
Дата:
Сообщение: Re: [HACKERS] MVCC Question
Следующее
От: Tom
Дата:
Сообщение: Re: [HACKERS] RE: Mysql comparison