some problems with new locking code
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!
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)