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