Re: shared-memory based stats collector

From: Arthur Zakirov <a(dot)zakirov(at)postgrespro(dot)ru>
To: Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>, alvherre(at)2ndquadrant(dot)com
Cc: andres(at)anarazel(dot)de, tomas(dot)vondra(at)2ndquadrant(dot)com, ah(at)cybertec(dot)at, magnus(at)hagander(dot)net, robertmhaas(at)gmail(dot)com, tgl(at)sss(dot)pgh(dot)pa(dot)us, pgsql-hackers(at)postgresql(dot)org
Subject: Re: shared-memory based stats collector
Date: 2019-02-21 14:30:50
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers


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 ... 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:
Russian Postgres Company

In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2019-02-21 14:37:46 Re: WIP: Avoid creation of the free space map for small tables
Previous Message Fabien COELHO 2019-02-21 14:27:21 Re: libpq host/hostaddr/conninfo inconsistencies