Thread: some problems with new locking code

some problems with new locking code

From
"Vadim B. Mikheev"
Date:
I created simple table (just single int4 attr) with index on it
and tried to reproduce reported problems with BTP_CHAIN flag
(without success, unfortunately ?) by inserting data by 3-4 psql-s
simultaneously. No problems with 2 clients. But when 3rd psql
starts one of psql-s becomes blocked for long time (a minutes).
After some time blocked process may continue insertion but
another process is sleeping instead of wake-uped proc. The same
with 4 psql-s: one of process is always sleeping!

It's very easy to reproduce - just create a file with >~ 100
INSERTs...

I also run 2 insertion procs + 2 selecting procs - result is
the same, one is always sleeping.

Vadim
P.S. Nevertheless, I really like new deadlock recognition code,
thanks!

Re: [HACKERS] some problems with new locking code

From
Bruce Momjian
Date:
>
> I created simple table (just single int4 attr) with index on it
> and tried to reproduce reported problems with BTP_CHAIN flag
> (without success, unfortunately ?) by inserting data by 3-4 psql-s
> simultaneously. No problems with 2 clients. But when 3rd psql
> starts one of psql-s becomes blocked for long time (a minutes).
> After some time blocked process may continue insertion but
> another process is sleeping instead of wake-uped proc. The same
> with 4 psql-s: one of process is always sleeping!

Thanks for finding this, Vadim.  I had meant to re-run my locking tests
on the new code before the 6.3 final, but had not done it yet.  I ran
them now, and they didn't work as they should.  It is fixed now.

The problem was that I was incrementing a counter in a while conditional
test, even though I was not executing the loop, and the counter was used
in the next loop.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)