Re: 15beta1 test failure on mips in isolation/expected/stats

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: 15beta1 test failure on mips in isolation/expected/stats
Дата
Msg-id 20220520044106.dxvm55g3o2yhvdzj@alap3.anarazel.de
обсуждение исходный текст
Ответ на Re: 15beta1 test failure on mips in isolation/expected/stats  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi,

On 2022-05-20 00:22:14 -0400, Tom Lane wrote:
> Andres Freund <andres@anarazel.de> writes:
> > Hm. Does the instability vanish if you switch s2_commit_prepared_a and s1_ff?
> 
> Like this?

Yea.


> diff --git a/src/test/isolation/specs/stats.spec b/src/test/isolation/specs/stats.spec
> index be4ae1f4ff..70be29b207 100644
> --- a/src/test/isolation/specs/stats.spec
> +++ b/src/test/isolation/specs/stats.spec
> @@ -562,8 +562,9 @@ permutation
>    s1_table_insert_k1 # should be counted
>    s1_table_update_k1 # dito
>    s1_prepare_a
> +  s1_ff
>    s2_commit_prepared_a
> -  s1_ff s2_ff
> +  s2_ff
>    s1_table_stats
>  
>  # S1 prepares, S1 aborts prepared
> 
> There's some fallout in the expected-file, of course, but this
> does seem to fix it (20 consecutive successful runs now at
> 100/2).  Don't see why though ...

I think what might be happening is that the transactional stats updates get
reported by s2 *before* the non-transactional stats updates come in from
s1. I.e. the pgstat_report_stat() at the end of s2_commit_prepared_a does a
report, because the machine is slow enough for it to be "time to reports stats
again". Then s1 reports its non-transactional stats.

It looks like our stats maintenance around truncation isn't quite "concurrency
safe". That code hasn't meaningfully changed, but it'd not be surprising if
it's not 100% precise...

Greetings,

Andres Freund



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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: 15beta1 test failure on mips in isolation/expected/stats
Следующее
От: Andy Fan
Дата:
Сообщение: Re: Tracking notnull attributes inside Var