Re: isolation test deadlocking on buildfarm member coypu

Поиск
Список
Период
Сортировка
От Noah Misch
Тема Re: isolation test deadlocking on buildfarm member coypu
Дата
Msg-id 20110727171438.GE18910@tornado.leadboat.com
обсуждение исходный текст
Ответ на Re: isolation test deadlocking on buildfarm member coypu  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
On Tue, Jul 26, 2011 at 05:04:28PM -0400, Alvaro Herrera wrote:
> *** /home/pgbuildfarm/workdir/HEAD/pgsql.20950/src/test/isolation/expected/fk-deadlock2.out    Sun Jul 24 08:46:44
2011
> --- /home/pgbuildfarm/workdir/HEAD/pgsql.20950/src/test/isolation/results/fk-deadlock2.out    Sun Jul 24 15:11:42
2011
> ***************
> *** 22,29 ****
>   step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
>   step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
>   step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
> - step s1u2: <... completed>
>   ERROR:  deadlock detected
>   step s1c:  COMMIT; 
>   step s2c:  COMMIT; 
>   
> --- 22,29 ----
>   step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
>   step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
>   step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
>   ERROR:  deadlock detected
> + step s1u2: <... completed>
>   step s1c:  COMMIT; 
>   step s2c:  COMMIT; 
> 
> 
> 
> I think the only explanation necessary for this is that one process
> reports its status before the other one.  I think it would be enough to
> add another variant of the expected file to fix this problem, but I
> don't quite want to do that because we already have three of them, and I
> think we would need to add one per existing expected, so we'd end up
> with 6 expected files which would be a pain to work with.

To really cover the problem in this way, we would need 16*3 variations covering
every permutation of the deadlocks detected when s1 runs the first command.  I
see these other options:

1. Keep increasing the s1 deadlock_timeout until we stop getting these.  This is
simple, but it proportionally slows the test suite for everyone.  No value will
ever be guaranteed sufficient.

2. Post-process the output to ascribe the deadlock detections in a standard way
before comparing with expected output.  This would also let us drop
deadlock_timeout arbitrarily low, giving a rapid test run.

3. Implement actual deadlock priorities, per discussion at
http://archives.postgresql.org/message-id/AANLkTimAqFzKV4Sc1DScruFft_Be78Y-oWPeuURCDnjR@mail.gmail.com
This is much more work, but it would let us drop deadlock_timeout arbitrarily
low and still get consistent results from the start.

-- 
Noah Misch                    http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services


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

Предыдущее
От: Noah Misch
Дата:
Сообщение: Re: sinval synchronization considered harmful
Следующее
От: David Fetter
Дата:
Сообщение: Re: [COMMITTERS] pgsql: Add missing newlines at end of error messages