postgres.git / summary / log / commit / refs

commit    bb93b33d7e39bb7a61ad6673193ab953fdc3f29c
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Mon Dec 09 05:35:44 2024 +0000
First released in: 18.0, 15.11, 16.7, 17.3

    Improve comment about dropped entries in pgstat.c
    
    pgstat_write_statsfile() discards any entries marked as dropped from
    being written to the stats file at shutdown, and also included an
    assertion based on the same condition.
    
    The intention of the assertion is to track that no pgstats entries
    should be left around as terminating backends should drop any entries
    they still hold references on before the stats file is written by the
    checkpointer, and it not worth taking down the server in this case if
    there is a bug making that possible.
    
    Let's improve the comment of this area to document clearly what's
    intended.
    
    Based on a discussion with Bertrand Drouvot and Anton A. Melnikov.
    
    Author: Bertrand Drouvot
    Discussion: https://postgr.es/m/a13e8cdf-b97a-4ecb-8f42-aaa367974e29@postgrespro.ru
    Backpatch-through: 15


src/backend/utils/activity/pgstat.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/activity/pgstat.c b/src/backend/utils/activity/pgstat.c index 87d22a1e19e..4dec9395c0b 100644 --- a/src/backend/utils/activity/pgstat.c +++ b/src/backend/utils/activity/pgstat.c @@ -1396,7 +1396,15 @@ pgstat_write_statsfile(void) CHECK_FOR_INTERRUPTS(); - /* we may have some "dropped" entries not yet removed, skip them */ + /* + * We should not see any "dropped" entries when writing the stats + * file, as all backends and auxiliary processes should have cleaned + * up their references before they terminated. + * + * However, since we are already shutting down, it is not worth + * crashing the server over any potential cleanup issues, so we simply + * skip such entries if encountered. + */ Assert(!ps->dropped); if (ps->dropped) continue; [parent: dc5f9054186a]