Hello,
On 21.02.2019 10:05, Kyotaro HORIGUCHI wrote:
> Done. This verison 16 looks as if the moving and splitting were
> not happen. Major changes are:
>
> - Restored old pgstats_* names. This largily shrinks the patch
> size to less than a half lines of v15. More than that, it
> gets easier to examine differences. (checkpointer.c and
> bgwriter.c have a bit stale comments but it is an issue for
> later.)
>
> - Removed "oneshot" feature at all. This simplifies pgstat API
> and let this patch far less simple.
>
> - Moved StatsLock to LWTRANCHE_STATS, which is not necessary to
> be in the main tranche.
>
> - Fixed several bugs revealed by the shrinked size of the patch.
I run regression tests. Unfortunately tests didn't pass, failed test is
'rangetypes':
rangetypes ... FAILED (test process exited with exit code 2)
It seems to me that an autovacuum process terminates because of segfault.
Segfault occurs within get_pgstat_tabentry_relid(). If I'm not mistaken,
somehow 'dbentry' hasn't valid pointer anymore.
'dbentry' is get in the line in do_autovacuum():
dbentry = pgstat_fetch_stat_dbentry(MyDatabaseId);
'dbentry' becomes invalid after calling pgstat_vacuum_stat().
--
Arthur Zakirov
Postgres Professional: http://www.postgrespro.com
Russian Postgres Company